簡體   English   中英

無法使用C ++連接到PostgreSQL

[英]Cannot connect to PostgreSQL using C++

我正在嘗試在Mac上運行PostgreSQL。 PostgreQL本身可以正常工作,我可以創建數據庫,表和其他東西,但是當我嘗試使用C ++通過以下方式連接到PostgreSQL時:

#include <stdio.h>
#include </Library/PostgreSQL/8.4/include/libpq-fe.h>
#include <string>

int     main() {
PGconn          *conn;
PGresult        *res;
int             rec_count;

conn = PQconnectdb("dbname=ljdata host=localhost user=dataman);

if (PQstatus(conn) == CONNECTION_BAD) {
 puts("We were unable to connect to the database");
exit(0);
} 

res = PQexec(conn, "update people set phonenumber=\'5055559999\' where id=3");

並用類似的東西編譯:

g++ -lpq db.cpp -o db

我收到錯誤ld:-lpq找不到庫

如果我不使用lpq進行編譯,我會得到

Undefined symbols:
  "_PQclear", referenced from:
      _main in ccpjNCAU.o
      _main in ccpjNCAU.o"

我已經包含了libpq-fe.h,這不行嗎? 有人知道出了什么問題嗎?

g ++找不到pq庫。 您必須使用大寫-L指定在哪里尋找它:

g++ -L/path/to/pq/lib -lpq db.cpp -o db

其中pq是/path/to/pq/lib/libpq.a(或任何擴展名)

這可能是您想做的:

  1. 更改包含行以沒有路徑。

     #include "libpq-fe.h" 
  2. 將包含路徑添加到命令行

     g++ -I/Library/PostgreSQL/8.4/include db.cpp 
  3. 構建中間目標文件

     g++ -I/Library/PostgreSQL/8.4/include db.cpp -c -o db.o 
  4. 將其鏈接在一起作為一個單獨的步驟

     g++ -L/Library/PostgreSQL/8.4/lib db.o -lpq 
  5. 使用-g構建調試信息

將它們放在一起,進行兩個單獨的構建步驟:編譯和鏈接:

g++ -I/Library/PostgreSQL/8.4/include db.cpp -c -g -o db.o
g++ -L/Library/PostgreSQL/8.4/lib db.o -lpq -o db

遇到相同的問題,您需要將庫的路徑添加到/etc/ld.so.conf ,然后您將看到。 祝好運

libpq-fe.h是一個用戶庫,而不是系統庫,因此應使用"..."代替<...> ,如下所示:

#include "/Library/PostgreSQL/8.4/include/libpq-fe.h"

看一下這個鏈接 並確保libpq-fe.h實際上可以被編譯器找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM