VS2010中c++程序调用PostgreSQL数据库C接口libpq.lib的项目Properties设置

来源:互联网 发布:2017网络新名词 编辑:程序博客网 时间:2024/05/01 12:29

        最近在写代码过程中需要用到PostgreSQL的c接口libpq.lib,在刚使用时总不能成功的调用其函数接口,遂在网上搜索了一下解决方法,经过一番纠结之后终于能够成功使用libpq.lib了(开心啊!^_^ v),现将方法总结如下:

        OS:win7-x64

        Microsoft Visual studio版本:Microsoft Visual studio 2010

        PostgreSQL版本:postgresql-9.2.4-1-windows-x64

        PostgreSQL安装目录:D:\Program Files\PostgreSQL

        在VS2010建立项目(RCWA3D),Alt+F7对该项目的Properties进行设置:

        1. Properties>C/C++>General,在Additional Include Directories中添加D:\Program Files\PostgreSQL\9.2\include路径,分号与其他路径隔开;

        2. Properties>Linker>General,在Additional Library Directories中添加D:\Program Files\PostgreSQL\9.2\lib路径,分号与其他路径隔开;(在该步骤中,也还有同时添加了D:\Program Files\PostgreSQL\9.2\bin路径的做法,在我的尝试中这种做法并没有起到任何作用)

        3. Properties>Linker>Input,在Additional Dependencies中添加libpq.lib,分号与其他lib文件隔开(步骤3也可通过在源代码中添加#pragma comment(lib,"libpq.lib")进行替代,如果步骤2未设置则需用#pragma comment(lib,"D:\Program Files\PostgreSQL\9.2\lib\libpq.lib")替代);

       以上3个步骤是我在网上找到的最详尽的关于调用PostgreSQL的c接口libpq.lib时需要进行的编译环境设置,然而在我的尝试中编译成功了,执行时却出现了下面的错误:

无法启动此程序,因为计算机中丢失LIBPQ.dll。尝试重新安装该程序以解决此问题。

       于是我在D:\Program Files\PostgreSQL\9.2\lib中找到libpq.dll将其复制到System32目录下,重新编译成功,执行时却又出现提示丢失SSLEAY32.dll,于是我在D:\Program Files\PostgreSQL\9.2\bin目录下又找到了SSLEAY32.dll将其复制到System32目录下,继续编译执行,而编译器则继续提示丢失libintl-8.dll,此时我才明白,步骤2中添加D:\Program Files\PostgreSQL\9.2\bin路径的做法只需要改成步骤4即可:

        4. Properties>Configuration Properties>Debugging,在Environment中添加path=%path%;D:\Program Files\PostgreSQL\9.2\bin路径。

        将上面4个步骤设置完成后,一般来说程序编译后即可执行成功,然而编译成功后执行时也可能出现"无法定位序数4540于动态链接库libeay32.dll “等形似"无法定位序数xxxx于动态链接库xxxx.dll"的错误提示,这主要是System32中xxxx.dll不是最新版本导致的,我们只需要用D:\Program Files\PostgreSQL\9.2\bin中的xxxx.dll对其进行覆盖就行了,这里则是用D:\Program Files\PostgreSQL\9.2\bin中的libeay32.dll将System32中的libeay32.dll替换即可。

原创粉丝点击