使用 MSYS,我编译了 libpq(来自编译 postgres)。然后我编译了 libpqxx。现在,我想创建一个使用 libpqxx 的客户端。libpq 似乎工作正常。而且,我可以用 libpqxx 编译代码。但是,链接 libpq 客户端应用程序失败。
这是我的代码:
#include <pqxx/pqxx>
#include <iostream>
using namespace std;
using namespace pqxx;
int main() {
connection Conn("dbname=test");
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
我徒劳地在链接中添加了一堆库,希望它会突然起作用。这是我到目前为止所拥有的:
g++ -IC:\msys\1.0\local\pgsql\include -IC:\msys\1.0\local\include -O0 -g3 -Wall -c -fmessage-length=0 -osrc\Controller.o ..\src\控制器.cpp g++ -LC:\MinGW\lib -LC:\msys\1.0\local\pgsql\lib -LC:\msys\1.0\local\lib -oController.exe src\Controller.o -lws2_32 -lole32 -lpqxx -lpq - loleaut32 -luuid C:\msys\1.0\local\lib/libpqxx.a(connection_base.o):在函数“ZN45_GLOBAL__N__ZN4pqxx16encrypt_passwordERKSsS1_7wait_fdEibP7timeval”中: C:/msys/1.0/home/rsolomon/libpqxx/libpqxx-3.0.2/src/connection_base.cxx:1434:未定义对“select@20”的引用 C:\msys\1.0\local\lib/libpqxx.a(connection_base.o):在函数“ZN4pqxx15connection_base12check_resultERKNS_6resultE”中: C:/msys/1.0/home/rsolomon/libpqxx/libpqxx-3.0.2/src/connection_base.cxx:420:未定义对“select@20”的引用 collect2: ld 返回 1 个退出状态 发生构建错误,构建已停止 消耗时间:1770 毫秒。
我在想 -lws2_32 应该给了我“select@20”。为什么链接器如此自大?