我所需要的只是让MinGW与Postgres交谈。我考虑了几个选择:
选项1听起来最不痛苦。我很确定该项目将使用Postgres,不太确定该项目是否会保留在Windows上。有没有一种简单的方法来获得这个功能?
答案 0 :(得分:4)
如果必须,您可以重建libpq。运行“./configure”,然后在src / interfaces / libpq中运行“make”。
但实际上,msvc构建的libpq应该可以正常使用mingw。它只是一个标准的Windows DLL。它可能是.lib的问题 - 但DLL应该没问题。 AFAIK,只有PQtrace()功能会被破坏 - 因为MSVCRT的工作方式,只有在你拥有完全相同的运行时版本时才有效。
如果.LIB不起作用,您还应该能够直接从DLL生成导入库。或者,MingW甚至允许您直接链接到DLL - 请参阅他们的wiki
让libpq工作可能比odbc容易得多。
答案 1 :(得分:1)
正如您在此处提出的R问题,我假设您可以设法读取R包的源代码。 RPostgreSQL包完全符合您的要求:
文件src / Makevars.win只有
PKG_CPPFLAGS=-I"${PG_HOME}"/include
PKG_LIBS=-L"${PG_HOME}"/lib -llibpq
告诉R Pg头和库的位置,然后链接libpq。
答案 2 :(得分:1)
附注...您可以使用Makefile中的以下变量轻松设置用于编译和链接Postgres文件的CXXFLAGS和LDFLAGS:
CXXFLAGS += -I$(shell pg_config --includedir)
LDFLAGS += -L$(shell pg_config --libdir) -llibpq
(前提是您在系统的PATH中包含了包含PostgreSQL安装的pg_config.exe的bin文件夹,并且使用了mingw32-make。)