构建libpqxx时无法解析的外部符号

问题描述

我正在尝试运行libpqxx,但是在尝试构建项目时遇到了一些困难。

我安装了Windows10 64位,Postgresql 13,CMake 3.18.4,下载了最新的libpqxx源,今天也刚刚更新了我的整个Visual Studio 17。

尝试在shell中运行它给了我

C:\Users\xxx\Documents\Programmieren\C++\Libraries>cmake -S libpqxx-master -B build -DCMAKE_INSTALL_PREFIX="libpqxx"
-- Building for: Visual Studio 15 2017
-- Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.19041.
-- The CXX compiler identification is MSVC 19.16.27043.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Postgresql: C:/Program Files/Postgresql/13/lib/libpq.lib (found version "13.0")
-- Looking for poll
-- Looking for poll - not found
-- Looking for PQencryptPasswordConn
-- Looking for PQencryptPasswordConn - not found
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Generating config.h
-- Generating config.h - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/xxx/Documents/Programmieren/C++/Libraries/build

我在Windows / system32和Windows / sysWOW64中添加了libpq.dll,当我尝试注册它们时,出现错误消息,找不到入口点。我认为它不必注册就可以运行,对吗?

就我而言,Poll是libpq中的一个类,而PQencryptPasswordConn是libpq中的一个函数,不知道它们是否丢失,以及在哪里丢失以及如何从此处解决

运行后: cmake -S libpqxx-master -B build -DCMAKE_INSTALL_PREFIX =“ libpqxx”

然后 cmake --build build --target安装

通过外壳并获得了大量未解决的外部错误,这只是一小部分演示,我认为这是来自libpq.dll的问题,因为它找不到先前的内容

pqxx.lib(largeobject.obj) : error LNK2019: Unresolved external symbol "_lo_export" in function ""public: void __thiscall pqxx::largeobject::to_file(class pqxx::dbtransaction &,class std::basi
c_string_view<char,struct std::char_traits<char> >)const " (?to_file@largeobject@pqxx@@QBEXAAVdbtransaction@2@V?$basic_string_view@DU?$char_traits@D@std@@@std@@@Z)". [C:\Users\xxx\Documents\Programmieren\C++\
Libraries\build\test\runner.vcxproj]
pqxx.lib(util.obj) : error LNK2019: Unresolved  external symbol "_PQisthreadsafe" in function ""struct pqxx::thread_safety_model __cdecl pqxx::describe_thread_safety(void)" (?describe_thread_s
afety@pqxx@@YA?AUthread_safety_model@1@XZ)". [C:\Users\xxx\Documents\Programmieren\C++\Libraries\build\test\runner.vcxproj]
pqxx.lib(encodings.obj) : error LNK2019: Unresolved external symbol "_pg_encoding_to_char" in function ""char const * __cdecl pqxx::internal::name_encoding(int)" (?name_encoding@internal@pqxx
@@YAPBDH@Z)". [C:\Users\xxx\Documents\Programmieren\C++\Libraries\build\test\runner.vcxproj]

C:\Users\xxx\Documents\Programmieren\C++\Libraries\build\test\Debug\runner.exe : Fatal error LNK1120: 70 unresolved externals [C:\Users\xxx\Documents\Programmieren\C++\Libraries\build\test\runner.vcxpro
j]

非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)