【问题标题】:How to create standalone program by static linking in Code::Blocks如何通过 Code::Blocks 中的静态链接创建独立程序
【发布时间】:2013-03-31 10:36:17
【问题描述】:

我想独立运行我的程序。它是使用 libmysql.lib 与 MySQL 的简单连接,并且需要 libmysql.dll 才能运行(将其放在同一文件夹中)。现在我的问题是,我怎样才能在 c::b 中编译,这样我就可以在其他机器上使用我的可执行文件并且不需要 .dll?我听说过静态库,但我不知道它是如何工作的,所以如果有人能解释一下这个过程,那就太好了。

附:我使用 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;
}

【问题讨论】:

  • 您是否已经有一些代码可以作为帮助您的起点?
  • 给你,谢谢:)

标签: c++ mysql dll static static-libraries


【解决方案1】:

转到Project-&gt;Build Options-&gt;(Select project name)。然后选择Linker settings,点击Link Libraries下的Add按钮,选择libmysql.lib。这应该静态编译你的程序,AFAIK。

有关详细信息,请参阅MySQL reference 中的在 Microsoft Windows 上编译 MySQL 客户端部分。

【讨论】:

  • 感谢您的回答 :) 我实际上已经这样做了,因为您写道正确链接了我的库。那么情况是,如果 libmysql.dll 不是 .lib,与 main.cpp 或 .exe 文件位于同一文件夹中,则程序将正确运行,否则给我一个错误,即 libmysql.dll 丢失,这就是我正在尝试的解决,所以即使 libmysql.dll 不存在它也会运行
  • 啊,对 :) 嗯,尝试在同一 Build Options 对话框中将 -static 和 -static-libgcc 标志添加到 Other linker options 文本框(在单独的行上)。
猜你喜欢
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多