[英]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(或任何擴展名)
這可能是您想做的:
更改包含行以沒有路徑。
#include "libpq-fe.h"
將包含路徑添加到命令行
g++ -I/Library/PostgreSQL/8.4/include db.cpp
構建中間目標文件
g++ -I/Library/PostgreSQL/8.4/include db.cpp -c -o db.o
將其鏈接在一起作為一個單獨的步驟
g++ -L/Library/PostgreSQL/8.4/lib db.o -lpq
使用-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.