Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ PostgreSQL独立应用程序_C++_C_Postgresql - Fatal编程技术网

C++ PostgreSQL独立应用程序

C++ PostgreSQL独立应用程序,c++,c,postgresql,C++,C,Postgresql,我在Windows上构建PostgreSQL客户端时遇到问题。实际上,它在编译机器(编译应用程序的机器)上编译得很好,运行平稳,但在不同的计算机(没有postgresql server)上它会给我带来错误-它找不到*.dll。我通过将.dll手动添加到应用程序的文件夹中修复了这个问题(我认为这不是处理这个问题的好方法,它只适用于32位机器) 你能告诉我应该链接哪些库,或者如何处理这种情况吗 谢谢大家! 您最有可能使用的是PostgreSQL主客户端库libpq.dll。您可以确定它需要使用哪些库

我在Windows上构建PostgreSQL客户端时遇到问题。实际上,它在编译机器(编译应用程序的机器)上编译得很好,运行平稳,但在不同的计算机(没有postgresql server)上它会给我带来错误-它找不到*.dll。我通过将.dll手动添加到应用程序的文件夹中修复了这个问题(我认为这不是处理这个问题的好方法,它只适用于32位机器)

你能告诉我应该链接哪些库,或者如何处理这种情况吗


谢谢大家!

您最有可能使用的是PostgreSQL主客户端库
libpq.dll
。您可以确定它需要使用哪些库,但从内存来看,它只需要openssl DLL,这些DLL与PostgreSQL bin dir中的DLL位于同一目录中,可能还有zlib。我现在没有一个方便的窗口框来检查
libpq
及其来自PostgreSQL
bin
文件夹的直接依赖项应与应用程序捆绑在应用程序可执行文件所在的同一目录中。它们不会被除你的应用之外的任何东西使用,也不会与系统上其他地方安装的软件产生冲突


<> P>有一个额外的依赖性,我怀疑可能咬你:你需要在目标机器上安装的微软VisualStudio C++可重新分配的适当版本。这是由PostgreSQL安装程序自动安装的。如果要在应用程序中绑定libpq,则安装程序也必须运行redist安装程序。所需的版本取决于您使用的PostgreSQL版本(您忽略了提及);可以通过dependency walker确定。

PostgreSQL文档中说您需要哪些文件?在网上搜索“dll walker”。@ThomasMatthews我想你指的是依赖性walker(Dependency.exe),我发现:这和你说的libpq.dll是一样的吗?不同的机器(体系结构)如何:32位/64位。我应该提供不同的DLL吗?@Dan如果您的应用程序被编译为64位平台的本机64位可执行文件,那么您必须绑定64位libpq。如果你的应用程序在64位windows上使用SysWow64以32位进程运行,你需要32位的libpq。因此,如果我在32位机器上编译我的应用程序,我只能提供32位DLL。@丹,如果你编译32位二进制文件,你只需要它链接到的32位DLL,是的。(您可以在32位机器上编译64位代码,但不能在那里运行它,所以说“32位机器”不太正确)。