Windows環境下編譯產生libpq

來源:互聯網
上載者:User

Windows環境下編譯產生libpq
編譯的時候,首先需要理解的是像VC IDE這樣的整合式開發環境,其實是調用了nmake這樣的編譯工具來編譯工程專案檔,和linux下面的make其實是一樣的。make在編譯的時候調用了cl等編譯工具,這個和make調用了cc等編譯工具也是一樣的,簡單的來講,就是這些編譯方式在windows下面和在linux下面是完全一樣的。
這次碰到的最大問題就是總是找不到nmake工具還有他調用的一些庫,這些按理來講,都是在VC IDE安裝完成以後自動添加到windows的環境變數裡面的,但是這次沒有,所以我很是花了一些時間來弄這個。
以下是整個的編譯過程介紹:

1、添加windows環境變數
      a) 在include變數裡面補充了:
D:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include\;D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include;D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include   
      b) 在lib變數裡面補充了:
D:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Lib\;D:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE;D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib;D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib
      c) 在path變數裡面補充了:
D:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
當然最簡單的方法就是調用D:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat這個bat檔案,用來設定環境變數。
 
2、開始編譯
cd進入{PGHOME}\src目錄,執行nmake /f win32.mak命令後,在{PGHOME}\src\interfaces\libpq\Release目錄裡產生libpq.lib和libpq.dll。
PS:    {PGHOME}為PostgreSQL所在位置。

3、添加工程檔案
注意一定要將postgresql目錄下面的{PGHOME}\src\include以及{PGHOME}\interfaces\libpq這兩個目錄作為include目錄加到項目裡面,
否則是編譯通過不了的。

4、一個簡單的例子
#include "stdafx.h"
#include "language.h"
#include "libpq/libpq-fe.h"

void verifyCCon()
{
    const char *conninfo;
    PGconn     *conn;
    PGresult   *res;
    PGnotify   *notify;
    int              nnotifies;
    conninfo = "host=localhost hostaddr=127.0.0.1 port=5432 dbname=FlowRecord user=postgres password=netflow";
    /* 和資料庫建立連結 */
    conn = PQconnectdb(conninfo);

    /*
    * 檢查一下與伺服器的串連是否成功建立
    */
    if (PQstatus(conn) != CONNECTION_OK)
    {
        std::cout<<"Connection to database failed:"<<PQerrorMessage(conn);
    }
    else
    {
        std::cout<<"Connection to database success!"<<endl;
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    language l("forest");
    cout<<l.getLan()<<endl;
    cnLan cnL("forest");
    cout<<cnL.getName()<<endl;

    verifyCCon();

 

    return 0;
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.