1

我正在使用 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"。我无法摆脱这个链接器错误,我做错了什么?

4

2 回答 2

2

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

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

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

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

于 2013-04-04T11:16:38.183 回答
2

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

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

于 2013-04-04T11:42:13.417 回答