2013-04-04 44 views
0

即时通讯使用Visual Studio 2012 Ultimate和PostgreSQL 9.2 64位。 我设置了以下设置一个全新的项目:通过C++访问PostgreSQL - 接口(链接器错误)

其他包括文件夹:“C:\ Program Files文件\的PostgreSQL \ 9.2 \包括\”

附加libs文件夹:“C:\ Program Files \ PostgreSQL \ 9.2 \ lib \“

Im针对”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奥夫nichtaufgelöstesexternes符号 “_PQconnectdb” 中的Funktion “_main” 我不能摆脱这个链接错误的,我是什么做错了

+3

对于那些无法猜测错误消息所说的内容:*在函数“_main”*中引用未解析的外部符号“_PQconnectdb”。 – Oswald 2013-04-04 11:02:03

回答

2

好吧,我想通了事情的原委:

书面我安装PostgreSQL的64位,但我试图编译和反对从PostgreSQL 64位libpg链接一个32位的项目。 从WIN32更改为x64后,连接成功。

2

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

这表明,你必须设置附加依赖以及附加包含和lib文件夹

0。

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

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

+0

只是想指出我已经遇到了与问题相同的问题,并将libpq.dll和libint.dll复制到本地目录后,将libpq.dll设置为额外的dep工作。 – user3791372 2014-08-06 07:35:49