从Cygwin运行C语言中的PostgreSQL客户端
我正在尝试用C语言在Cygwin上构建一个非常简单的PostgreSQL客户端.
这是我到目前为止所做的: >我已经下载了PostgreSQL源代码版本9.1.2(以匹配我服务器上运行的相同版本) > /cygdrive/c/workspace/src/postgresql-9.1.2/src/interfaces/libpq,和 >图书馆在: > /cygdrive/c/workspace/src/postgresql-9.1.2/src/interfaces/libpq 从这里开始,我使用下面的makefile编译并链接了客户端程序: testlibpq: testlibpq.c gcc -o testlibpq -I /cygdrive/c/workspace/src/postgresql-9.1.2/src/interfaces/libpq -I /cygdrive/c/workspace/src/postgresql-9.1.2/src/include -L /cygdrive/c/workspace/src/postgresql-9.1.2/src/interfaces/libpq testlibpq.c -Bstatic -lpq 编译和链接成功,没有错误或警告. 但是,当我尝试运行该程序时,我收到以下错误: $./testlibpq /cygdrive/c/Users/dleclair/Dropbox/denis/src/testlibpq/testlibpq.exe: error while loading shared libraries: cygpq.dll: cannot open shared object file: No such file or directory 我还没弄明白如何解决这个问题.任何指针都将非常感激. dleclair@dleclair-win7l ~/Dropbox/denis/src/testlibpq $ls /cygdrive/c/workspace/src/postgresql-9.1.2/src/interfaces/libpq bcc32.mak encnames.o fe-connect.o fe-misc.o fe-protocol3.o ip.o libpq-events.c md5.c pgstrcasecmp.c pqsignal.c thread.o blibpqdll.def exports.txt fe-exec.c fe-print.c fe-secure.c libpq.a libpq-events.h md5.o pgstrcasecmp.o pqsignal.h wchar.c chklocale.c fe-auth.c fe-exec.o fe-print.o fe-secure.o libpq.rc.in libpq-events.o nls.mk po pqsignal.o wchar.o chklocale.o fe-auth.h fe-lobj.c fe-protocol2.c inet_net_ntop.c libpqddll.def libpq-fe.h noblock.c pqexpbuffer.c pthread-win32.c win32.c cygpq.dll fe-auth.o fe-lobj.o fe-protocol2.o inet_net_ntop.o libpq-dist.rc libpq-int.h noblock.o pqexpbuffer.h README win32.h encnames.c fe-connect.c fe-misc.c fe-protocol3.c ip.c libpqdll.def Makefile pg_service.conf.sample pqexpbuffer.o thread.c win32.mak dleclair@dleclair-win7l ~/Dropbox/denis/src/testlibpq $echo $LD_LIBRARY_PATH /cygdrive/c/workspace/src/postgresql-9.1.2/src/interfaces/libpq dleclair@dleclair-win7l ~/Dropbox/denis/src/testlibpq 解决方法
通常在构建源代码之后的unix / linux系统上进行make install,将头文件复制到标准位置,如/usr/local/include和/usr/local/lib.您可能必须在cygwin上执行此操作才能在搜索路径中获取DLL.
或者您可以自己找到DLL并将其放在搜索路径上或与可执行文件位于同一文件夹中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |