2013-03-31 93 views
3

我想單獨運行我的程序。它使用libmysql.lib連接到MySQL很簡單,並且需要libmysql.dll才能運行(將它放在同一個文件夾中)。現在我的問題是,我怎麼能編譯在c :: b,所以我可以使用我的可執行文件在其他機器上,不會需要.dll?我聽說過靜態庫,但我不知道它是如何工作的,所以如果有人能夠向我解釋這個過程會非常好。如何通過靜態鏈接在Code :: Blocks中創建獨立程序

P.S.我使用GNU CC編譯器。

#include <iostream> 
#include <winsock.h> 
#include <mysql.h> 


using namespace std; 


int main() { 

MYSQL *connect; 
MYSQL_RES *res_set; 
MYSQL_ROW row; 
connect = mysql_init(NULL); 


connect = mysql_real_connect(connect, "HOST", "USER", "PASS", "Server", 3306, NULL, 0); 

while(true) { 
    mysql_query(connect, "SELECT * FROM Server"); 

    res_set = mysql_store_result(connect); 

    while(row = mysql_fetch_row(res_set)) { 
     cout << row[0] << " " << row[1] << " " << row[2] << endl; 
    } 
    Sleep(2000); 
} 

mysql_close(connect); 


return 0; 
} 
+0

你是否已經有一些代碼,有人可以用它作爲幫助你的起點? – halfer

+1

在這裏,你去,謝謝:) – user2059477

回答

3

轉到Project->Build Options->(Select project name)。然後選擇Linker settings並點擊Link Libraries下的Add按鈕,然後選擇libmysql.lib。這應該靜態編譯你的程序,AFAIK。

請參閱在Microsoft Windows上編譯MySQL客戶端關於MySQL reference的章節以獲取更多信息。

+2

感謝您的回答:)我已經實際上已經做到了,因爲你寫了正確的鏈接我的圖書館。然後,情況是,如果libmysql.dll不是.lib,與main.cpp或.exe文件位於同一文件夾中,程序將正常運行,否則給我一個libmysql.dll丟失的錯誤,那就是我正在嘗試的即使libmysql.dll不存在,所以它仍然運行 – user2059477

+2

嗯,正確的:)嗯,嘗試添加'-static'&'-static-libgcc'標誌到'Other linker options'文本框(分開的行)在同一個「Build Options」對話框中。 – amrith92

相關問題