我正在尝试使用 MinGW 版本 13.2.0 在 Windows 下构建 pqxx。我还使用它编译了 PostgreSQL,因为无法从标准安装的 Postgres 库中编译它。该库本身已编译,IDE 可以看到它,但是在用它构建项目时,它会在 80-84 范围内产生一堆未定义的引用。这个基于 MinGW 中编译的 DBMS 源的库是否会连接到 Windows 上安装的标准 Postgres,我该如何解决这个问题?
我按照BUILDING-cmake 的顺序组装了 pqxx 。
cmake -G "MinGW Makefiles" -DPostgreSQL_ROOT="путь к собранным исходникам Postgres" .
cmake --build .
以下是错误(库路径已更改):
C:/MinGW/bin/mingw32-make.exe -f Makefile.Debug mingw32-make 1:进入目录“D:/Yoel/build-SimpleDatabase-Desktop_Qt_5_14_2_MinGW_64_bit-Debug” g++ -Wl,-subsystem,console -mthreads -o debug\SimpleDatabase.exe debug/main.o -LD:\Yoel\postgresql\lib -lpq -LD:\Yoel\pq\src\libpqxx.a C:\Qt\Qt5.14.2\5.14.2\mingw73_64\lib\libQt5Core.a
C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../x86_64-w64-mingw32/bin/ld.exe: debug/main.o: 在函数throw_for_encoding_error': D:\Yoel\build-SimpleDatabase-Desktop_Qt_5_14_2_MinGW_64_bit-Debug/../pq/include/pqxx/internal/encodings.hxx:124:(.text+0x1c6): undefined reference to
pqxx::argument_error::argument_error(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)' C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../x86_64-w64-mingw32/bin/ld.exe: debug/main.o: 在函数__static_initialization_and_destruction_0': D:\Yoel\build-SimpleDatabase-Desktop_Qt_5_14_2_MinGW_64_bit-Debug/../pq/include/pqxx/strconv.hxx:80:(.text+0x40b): undefined reference to
pqxx::internal::demangle_type_name[abi:cxx11](char const*)' C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../x86_64-w64-mingw32/bin/ld.exe: D:\Yoel\build-SimpleDatabase-Desktop_Qt_5_14_2_MinGW_64_bit-Debug/../pq/include/pqxx/strconv.hxx:80:(.text+0x43b): 对pqxx::internal::demangle_type_name[abi:cxx11](char const*)' C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:\Yoel\build-SimpleDatabase-Desktop_Qt_5_14_2_MinGW_64_bit-Debug/../pq/include/pqxx/strconv.hxx:80:(.text+0x46b): undefined reference to
pqxx::internal::demangle_type_name[abi:cxx11](char const*)'未定义引用C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:\Yoel\build-SimpleDatabase-Desktop_Qt_5_14_2_MinGW_64_bit-Debug/../pq/include/pqxx/strconv.hxx:80:(.text+0x49b): 未定义对pqxx::internal::demangle_type_name[abi:cxx11](char const*)' C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: debug/main.o: in function
pqxx::check_version()' 的引用: D:\Yoel\build-SimpleDatabase-Desktop_Qt_5_14_2_MinGW_64_bit-Debug/../pq/include/pqxx/util.hxx:248:(.text$_ZN4pqxx13check_versionEv[_ZN4pqxx13check_versionEv]+0x31): 对pqxx::internal::check_pqxx_version_7_10()' C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: debug/main.o: in function
pqxx::connection::connection(char const*)' 未定义引用: D:\Yoel\build-SimpleDatabase-Desktop_Qt_5_14_2_MinGW_64_bit-Debug/../pq/include/pqxx/connection.hxx:287:(.text$_ZN4pqxx10connectionC1EPKc[_ZN4pqxx10connectionC1EPKc]+0x79): 对 pqxx::connection::~connection() ' 未定义引用pqxx::connection::init(char const*)' C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: debug/main.o: in function
: D:\Yoel\build-SimpleDatabase-Desktop_Qt_5_14_2_MinGW_64_bit-Debug/../pq/include/pqxx/connection.hxx:329:(.text$_ZN4pqxx10connectionD1Ev[_ZN4pqxx10connectionD1Ev]+0x14): 未定义对“pqxx::connection::close()”的引用 collect2.exe: 错误:ld 返回 1 退出状态 mingw32-make 1 : *** [Makefile.Debug:68: debug/SimpleDatabase.exe] 错误 1 mingw32-make 1 : 离开目录“D:/Yoel/build-SimpleDatabase-Desktop_Qt_5_14_2_MinGW_64_bit-Debug” mingw32-make: *** [Makefile:45: debug] 错误 2