[英]Can't link libpqxx in MinGW
使用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\Controller.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): In function `ZN45_GLOBAL__N__ZN4pqxx16encrypt_passwordERKSsS1_7wait_fdEibP7timeval': C:/msys/1.0/home/rsolomon/libpqxx/libpqxx-3.0.2/src/connection_base.cxx:1434: undefined reference to `select@20' C:\msys\1.0\local\lib/libpqxx.a(connection_base.o): In function `ZN4pqxx15connection_base12check_resultERKNS_6resultE': C:/msys/1.0/home/rsolomon/libpqxx/libpqxx-3.0.2/src/connection_base.cxx:420: undefined reference to `select@20' collect2: ld returned 1 exit status Build error occurred, build is stopped Time consumed: 1770 ms.
我在想-lws2_32應該給我“ select @ 20”。 為什么鏈接器如此令人討厭?
傳統上,Unix鏈接器從左到右處理庫。 因此,它首先考慮了ws2_32
,發現它沒有太多用處,然后繼續進行pqxx,並發現select是未定義的,並且以后的任何庫都未定義。 IOW,嘗試將ws2_32
移至命令行末尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.