2017-03-17 51 views
0

我想在C编写一个与postgres数据库连接的程序(在windows上)。 首先,我曾在3线C with postgresql

#include <libpq-fe.h> 

但后来我得到一个错误

... main.c|3|fatal error: libpq-fe.h: No such file or directory 

所以我改变3线

#include "C:/Program Files/PostgreSQL/9.6/include/libpq-fe.h" 

,但我仍然得到一个错误

ld.exe||cannot find -lpq-fe.h| 

任何想法?

#include <stdio.h> 
#include <stdlib.h> 
#include "C:/Program Files/PostgreSQL/9.6/include/libpq-fe.h" 
#include <string.h> 


int main() 
{ 
    PGresult *result; 
    PGconn *conn; 

    conn = PQconnectdb("host=localhost port=5432 dbname=mydb 
      user=postgres password=mypassword"); 

    if(PQstatus(conn) == CONNECTION_OK) { 
    printf("connection made\n"); 
    } 
    else 
    printf("connection failed: %s\n", PQerrorMessage(conn)); 

    PQfinish(conn); 
    return 0; 
} 
+1

https://www.postgresql.org/docs/current/static /libpq-build.html –

回答

0

你不路径添加到include指令,那是你坚持

#include <libpq-fe.h> 

包括目录编译器您指定的文件路径。

你是如何做到这一点取决于你正在使用的编译器。

与Microsoft Visual C,你会调用cl

cl /I C:/Program Files/PostgreSQL/9.6/include ... 

随着MinGW和gcc,你会写

gcc -L C:/Program Files/PostgreSQL/9.6/include ... 
+0

在这种情况下,我使用代码块,我添加到编译器选项-L“C:/ Program Files/PostgreSQL/9.6/include” 但我仍然收到错误 ld.exe ||找不到C:\ Program Files \ PostgreSQL \ 9。 6 \ include:权限被拒绝| – FiliusBonacci

+0

你有答案:*权限被拒绝*。您必须更改文件和目录权限,以便运行编译器的用户有权读取头文件。 –