gpt4 book ai didi

qt - 链接到 libpq 失败,带有未解析的符号 _PQconnectdb

转载 作者:行者123 更新时间:2023-11-29 12:46:10 25 4
gpt4 key购买 nike

我用的是Qt5,msvc2010,windows7 64bit。

我想测试我是否可以链接 libpq.lib。

http://www.postgresql.org/docs/9.2/static/libpq-example.html

我在 QtCreator 中构建了上面的示例。

得到

错误 LNK2019:函数“_main”中未解析的外部符号 _PQconnectdb

我检查我的 libpq.lib 使用 dumpbin libpq.lib/exports

得到

        1    PQconnectdb
156 PQconnectdbParams

How to See the Contents of Windows library (*.lib)

所以区别在于 PQconnectdb 和 _PQconnectdb

是不是那个下划线让链接器找不到真正的符号PQconnectdb?为什么编译器要在符号上加下划线?

我该如何解决这个问题?

最佳答案

Is that underscore that makes the linker can't find the real symbol PQconnectdb? Why the compiler add an underscore to the symbol?

这是 __cdecl该约定对 x86(32 位)仍然有效,但对于 64 位构建已被废弃。

因为 dumpbin libpq.lib/exports 没有显示下划线,这意味着这个库来自 64 位构建。

要生成 32 位程序,请将库替换为 32 bits PostgreSQL zip archive 中的 lib 目录.内容将与您当前显示为 32 位的构建配置兼容。

另一方面,要生成 64 位程序,请将 Qt Creator 配置为使用 64 位“工具包”(例如,在 Qt Creator 3 中,Projects 选项卡,请参阅Add KitBuild & Run 面板中)与您已有的 64 位 PostgreSQL 库。

关于qt - 链接到 libpq 失败,带有未解析的符号 _PQconnectdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20901218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com