首页 新闻 会员 周边 捐助

c++17 调用libpqxx7.7版本报错

0
[已解决问题] 解决于 2023-07-04 18:22

有哪位大佬用c++在window环境上安装过libpqxx连接postgresql,遇到一点问题
环境:c++17、win10 64位 x64、libpqxx 7.7.5、vscode2022 社区版、postgresql 15
类库已经安装成功,但是调用失败。

,报错为:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 PQresultStatus,函数 "private: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl pqxx::result::status_error(void)const " (?status_error@result@pqxx@@AEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) 中引用了该符号 LjReport_Cxx17_Server_N2 C:\Opt\LjReport_Cxx17_Server_N2\pqxx.lib(result.obj) 1

我当道士那儿些年的主页 我当道士那儿些年 | 菜鸟二级 | 园豆:208
提问于:2023-06-30 23:38
< >
分享
最佳答案
1

可以先直接使用 PostgreSQL C 驱动 libpq 试试

奖励园豆:5
postgre | 菜鸟二级 |园豆:211 | 2023-07-03 09:30

c是可以的,libpq是可以使用的

但是libpqxx不行,很奇怪

我当道士那儿些年 | 园豆:208 (菜鸟二级) | 2023-07-03 16:14
其他回答(1)
1

根据您提供的错误信息,看起来是链接器无法解析到libpqxx库中的某个符号(PQresultStatus)。这可能是由于以下几个原因导致的:

库路径设置错误:请确保在链接器的库路径中正确指定了libpqxx库的位置。这可以通过在项目配置中添加正确的库目录进行设置。

库版本不匹配:确保您使用的libpqxx库版本与您的项目相兼容。请检查您使用的libpqxx版本和项目的编译器是否一致。如果您使用的是libpqxx 7.7版本,请确认它与您的编译器以及其他依赖库的版本兼容。

缺少依赖库:libpqxx可能依赖于其他库,如libpq(PostgreSQL C库)。请确保您已正确地安装并链接了所有必需的依赖库。

链接器选项错误:确保在项目配置中正确设置了链接器选项。这包括将libpqxx库添加到链接器的附加依赖项中。

请检查以上可能的原因,并逐一排除。如果问题仍然存在,请提供更多的项目配置和环境细节,以便我们能够更具体地帮助您解决问题。

Technologyforgood | 园豆:7535 (大侠五级) | 2023-07-01 23:50

1、库路径设定,确定正确指向了libpqxx的库
2、库版本不对,c++17是支持libpqxx7系列以上的,并且我测试了7.0、7.1、7.2、7.4、7.7不同的版本
3、缺少依赖项,怎么讲呢,我怀疑到这点了,但是vs2022里面我增加指向了postgresql的lib。里面有针对libpq也就是c的libpq.lib,并增加了。
4、链接库我也指向了。
5、并且我还测试了c++20版本
6、我还问了chatgpt,还是没找到问题在哪。



支持(0) 反对(0) 我当道士那儿些年 | 园豆:208 (菜鸟二级) | 2023-07-02 00:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册