我正在尝试在我的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,不应该有用吗?有人知道出了什么问题吗?
答案 0 :(得分:4)
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
答案 1 :(得分:0)
libpq-fe.h
是一个用户库,而不是系统库,因此您应该使用"..."
而不是<...>
,如下所示:
#include "/Library/PostgreSQL/8.4/include/libpq-fe.h"
看看this link。并确保编译器实际上可以找到libpq-fe.h
。
答案 2 :(得分:0)
遇到同样的问题,你需要将库的路径添加到/etc/ld.so.conf
,这样做,你会看到。
祝你好运