0

当我为某些客户端编写代码时postgresqlcpp我总是对这个简单的代码有疑问:

#include <iostream>
#include <libpq-fe.h>
#include <stdio.h>
using namespace std;

char pghost[] = "localhost";
char pgport[] = "5432";
char pgbase[] = "baza";
char pguser[] = "postgres";
char pgpass[] = "server";
char conninf[] = "host=localhost port=5432 database=postgres user=postgress password=server";

int main(){    
  PGconn *conn = PQsetdbLogin(pghost,pgport,NULL,NULL,pgbase,pguser,pgpass);

  if (PQstatus(conn) == CONNECTION_OK)
  {
    //if connected
    cout<<"Ok.\n";
  }
  else
  {  
    cout<<"ERROR: %s\n";
    PQfinish(conn);
    }
    return 0;
  }
}        

我有一个错误输出

C:\Users\Tom\Desktop\connect\connect.cpp|16|undefined reference to `PQsetdbLogin'| 

以及库中其他功能的很多错误。

我做错了什么?如何在 Windows 上正确连接到这个库?

4

2 回答 2

3

文档

testlibpq.o: In function `main':
testlibpq.o(.text+0x60): undefined reference to `PQsetdbLogin'
testlibpq.o(.text+0x71): undefined reference to `PQstatus'
testlibpq.o(.text+0xa4): undefined reference to `PQerrorMessage'

This means you forgot -lpq.

尝试传递-lpq标志,看看您提到的其他错误是否消失。

于 2013-04-09T11:31:24.987 回答
0

您的 libpq-fe.h 文件包含: extern PGconn *PQsetdbLogin ??

还要检查你的库。可能是缺少 libq 链接器。

在构建项目时尝试包含 include/postgresql -L/lib -lpq。

于 2016-02-09T14:07:57.593 回答