Windows系统下编译PostgreSQL ECPG程序失败的问题咨询
Windows系统下编译PostgreSQL ECPG程序失败的问题咨询
我在Windows 11上安装了PostgreSQL v15.5,在C:\Program Files\PostgreSQL\15\lib路径下找到了ECPG的相关库文件(libecpg.dll、libecpg.lib),同时为了编译ECPG程序,我也安装了MinGW的gcc编译器。
我写了一个非常简单的ECPG测试程序example01.pgc,代码如下:
#include <stdio.h> #include <stdlib.h> void main() { exec sql begin declare section; int sum; /* host variable */ exec sql end declare section; exec sql connect to 'postgres'; /* connect to postgres DB */ exec sql select 1 + 1 into :sum; printf("sum = %d\n", sum); }
但在编译这个程序的过程中,我始终遇到失败的情况,具体的执行步骤和报错信息如下:
E:\ecpg>ecpg example01.pgc E:\ecpg>gcc -I"C:\\Program Files\\PostgreSQL\\15\\include" -c example01.c E:\ecpg>gcc -L"C:\\Program Files\\PostgreSQL\\15\\lib\\libecpg.dll" -o example01 example01.o example01.o:example01.c:(.text+0x46): undefined reference to `ECPGconnect' example01.o:example01.c:(.text+0xe2): undefined reference to `ECPGdo' collect2.exe: error: ld returned 1 exit status E:\ecpg>gcc -L"C:\\Program Files\\PostgreSQL\\15\\lib\\libecpg.lib" -o example01 example01.o example01.o:example01.c:(.text+0x46): undefined reference to `ECPGconnect' example01.o:example01.c:(.text+0xe2): undefined reference to `ECPGdo' collect2.exe: error: ld returned 1 exit status
需要说明的是,这段代码在Linux系统上编译是可以正常运行的,但在Windows上却一直报未定义引用的错误。我想知道:Windows系统下是不是无法编译ECPG程序?如果可以的话,我该怎么操作才能解决这个问题?麻烦大家帮忙看看,谢谢!
备注:内容来源于stack exchange,提问作者Ciphero Chen




