我正在尝试使用Visual Studios 2013创建.dll。该项目包含libpq功能。
其他stackoverflow帖子和我在互联网上找到的其他来源,我(据我所知)正确添加了postgres lib并将目录包含在项目中。但是,当我去构建项目时,它会返回一些"未解析的外部符号"错误。
我的路径是C:\Program Files\PostresSQL\9.3\...
,所以我在附加资料库/包含目录字段中用引号括起来。我在项目中添加了libpq-fe.h
标题文件...我只是不确定我做错了什么。
另外注意,我可以使用带有-I,-L和-lpq标志的g ++从命令行编译测试程序,但是我不确定如何从命令行编译为.dll (加上它增加了我不想处理的复杂性。)
这些是我得到的具体错误:
1>sql_arma.obj : error LNK2001: unresolved external symbol _PQconnectdb
1>sql_arma.obj : error LNK2001: unresolved external symbol _PQstatus
1>sql_arma.obj : error LNK2001: unresolved external symbol _PQerrorMessage
1>sql_arma.obj : error LNK2001: unresolved external symbol _PQfinish
1>C:\Users\tills13\documents\visual studio 2013\Projects\sql_arma\Release\sql_arma.dll : fatal error LNK1120: 4 unresolved externals
如下所示,我在项目的源文件中包含#pragma comment(lib, "libpq.lib")
,我仍然收到这些错误。
答案 0 :(得分:2)
我通过设置这些项目属性成功编译了sample program:
<pgsql install path>\include
和\lib
添加到 VC ++目录 - &gt;包含和 - &gt;图书馆,相应地libpq.lib
添加到链接器 - &gt;输入 - &gt;其他依赖项 这是引用第三方库的标准方法。只是他们建议使用环境变量作为他们的“基础目录”,以避免在VCS下修补项目。
PATH=%PATH%;<pgsql install path>\bin
,因为此目录不在{{ 1}}在我的系统上。答案 1 :(得分:0)
将postgres lib目录添加到项目中是不够的,您还必须添加
参考libpq.lib
。只需将此行添加到您的一个源.cpp
文件中:
#pragma comment(lib, "libpq.lib")
如 Marco A。所述,库必须与程序位数(32或64位)匹配:如果构建32位DLL(称为Win32
),则必须使用32位库;如果是64位(x64
) - 64位库。
答案 2 :(得分:0)