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」を与えるべきだったと思います。なぜリンカはとても高尚なのですか?