在Windows 10上从Visual Studio 2015链接libpqxx 我最近决定试用PostgreSQL作为我正在开发的C++开发的数据库平台。我决定使用libpqxx作为我项目的连接库,并很快发现这将是一场从VS 2015开始在Windows 10机器上进行的艰苦战斗

在Windows 10上从Visual Studio 2015链接libpqxx 我最近决定试用PostgreSQL作为我正在开发的C++开发的数据库平台。我决定使用libpqxx作为我项目的连接库,并很快发现这将是一场从VS 2015开始在Windows 10机器上进行的艰苦战斗,c++,visual-studio,postgresql,C++,Visual Studio,Postgresql,在咬牙切齿和咬指甲之后,我已经让libpqxx在windows10上编译了。 这就给我留下了以下目录结构 根据libpqxx的文档,我还将libpq.dll的副本放在项目的可执行目录中。请注意:我对调试版本和发布版本都做了这项工作,并尝试同时构建这两个版本,最终得到了相同的结果 我看到的所有教程似乎都表明,该库在链接之后就可以使用了,只需#包括pqxx/pqxx,因此我建立了一个小项目来实现这一点。我收到错误消息: 致命错误C1083:无法打开包含文件:“pqxx/pqxx”:没有此类文件或目

在咬牙切齿和咬指甲之后,我已经让libpqxx在windows10上编译了。 这就给我留下了以下目录结构

根据libpqxx的文档,我还将libpq.dll的副本放在项目的可执行目录中。请注意:我对调试版本和发布版本都做了这项工作,并尝试同时构建这两个版本,最终得到了相同的结果

我看到的所有教程似乎都表明,该库在链接之后就可以使用了,只需#包括pqxx/pqxx,因此我建立了一个小项目来实现这一点。我收到错误消息:

致命错误C1083:无法打开包含文件:“pqxx/pqxx”:没有此类文件或目录

当尝试构建项目时。我也尝试过这将调试和发布版本,但没有效果

下面是我的链接器设置的一个示例


有人对我如何从Visual Studio 2015链接和使用此库有什么建议吗?

正如Sami Kuhmonen指出的,这实际上不是链接器错误,而是编译器错误。我需要包含一个实际的标题,VisualStudio需要能够找到它。根据drescherjm的建议,在C\C++->General下的Visual Studio“additional include directories”设置中添加了正确的文件夹(在我的示例中为C:\libpqxx\include)后,该程序就可以正常编译了

供日后参考:
在解决最初的问题后,我也遇到了未解决的外部链接器错误。这是因为您需要确保还链接到ws2_32.lib和libpq.lib。您还需要将libpq也依赖的一些其他DLL文件复制到libpqxx lib文件夹中。在我的系统中,我相信它们是ssleay32.dll、libeay32.dll和libintl-8.dll。这些文件位于PostgreSQL安装的根目录下。libpqxx的INSTALL.txt文件中提到了DLL步骤,但我相信它指出DLL位于我实际找到它们的文件夹下。

我也遇到了同样的问题。然后我意识到我正在构建一个32位的应用程序。我将目标更改为x64,它编译成功

这是编译器错误,不是链接器错误。您尚未为其提供包含文件的路径。谢谢@SamiKuhmonen!你知道我将在VS中的何处执行此操作,或者需要包含哪个文件夹吗?我已经在C\C++->General->Additional Include目录下添加了C:\libpqxx\lib的路径,但这似乎没有什么区别。您需要包含标题的文件夹<代码>C:\libpqxx\lib不是该文件夹。是否有
C:\libpqxx\include
?哪个文件夹包含文件夹
pqxx
?确实有。谢谢你的快速帮助!正如您可能知道的,我对堆栈溢出非常陌生,有没有什么方法可以“升级”你们的评论,将它们标记为解决方案,或者类似的方法来感谢您的帮助?事实上,现在我已经获得了正确的include,我现在在构建时遇到了几个“未解决的外部”链接器错误。当我尝试创建到数据库的连接时,这些问题就会发生。关于这一点,最好再发一个问题,还是在这里解决?对于调试生成,它们显示为类似于函数“public:virtual struct pg_conn*u cdecl pqxx::connect_async::do_startconnect(struct pg_conn*)”中引用的未解析外部符号PQconnectStart”(?do_startconnect@connect_async@pqxx@@UEAAPEAUpg_conn@@PEAU3@@Z).共有58个。您从何处获得
ws2_32.lib
libpq.lib
文件,它们是否也进入libpqxx lib文件夹?