【问题标题】:Access PostgreSQL via C++-Interface (Linker error)通过 C++ 接口访问 PostgreSQL(链接器错误)
【发布时间】:2013-04-04 10:55:52
【问题描述】:

我正在使用 Visual Studio 2012 Ultimate 和 PostgreSQL 9.2 64 位。 我使用以下设置设置了一个全新的项目:

其他包含文件夹:“C:\Program Files\PostgreSQL\9.2\include\”

其他库文件夹:“C:\Program Files\PostgreSQL\9.2\lib\”

我正在链接“libpq.lib”。

我的问题是这样的:

#include <iostream>
using namespace std;

#include <libpq-fe.h>

int main() {

    PGconn *psql = PQconnectdb("hostaddr = '127.0.0.1' port = '' dbname = 'fwaggle' user = 'fwaggle' password = 'password' connect_timeout = '10'");
    /* init connection */
    if (!psql) {

    }

    std::cin.get();
    return 0;
}

结果:“错误 LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_PQconnectdb" in Funktion "_main"。我无法摆脱这个链接器错误,我做错了什么?

【问题讨论】:

  • 对于那些无法猜测错误消息内容的人:在函数“_main”中引用未解析的外部符号“_PQconnectdb”

标签: c++ postgresql linker


【解决方案1】:

看看这个链接:http://www.askyb.com/cpp/c-postgresql-example/

它建议您必须设置 Additional Dependencies 以及 Additional Includes 和 Lib 文件夹。

如果失败,请仔细检查您尝试调用的方法的名称,并仔细检查 Additional Includes 和 Lib 设置中的路径;从资源管理器中复制并粘贴它们以确保确定。

您可能还想使用 depends.exe 来检查 DLL 是否实际导出了您所追求的方法。

【讨论】:

  • 只是想指出我遇到了与问题相同的问题,在将 libpq.dll 和 libint.dll 复制到本地目录后,将 libpq.dll 设置为附加的 dep 对我有用!
【解决方案2】:

好的,我知道发生了什么:

正如我所写,我安装了 64 位 PostgreSQL,但我尝试编译和链接一个 32 位项目与来自 PostgreSQL 的 64 位 libpg。 从WIN32改成x64后链接成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-12
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多