簡體   English   中英

無法在MinGW中鏈接libpqxx

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM