我正在编写一个通过静态库(包括 tinyxml2、sqlite3、openssl 和 libpq)链接所有 3rd 方代码的应用程序;每当我尝试链接到 libpqd.lib 时,一切都运行良好——使用了 9.1.9 和 9.2.4 源——我得到:
1>LIBCMTD.lib(dosmap.obj) : error LNK2005: __dosmaperr already defined in libpqd.lib(win32error.obj)
这是唯一的错误,到目前为止我的搜索一直没有结果。请注意,我/MTd
在所有库中都使用了多线程调试运行时库,而 postgresql 默认情况下没有;我已经手动修补了 win32.mak 以使用/MTd
和/MT
代替以前无法配置的/MDd
和/MD
. 这解决了一些以前的链接器错误,但不要认为它与最后一个错误有关,因为它之前存在。
我通过以下方式编译 libpq:
nmake /f win32.mak DEBUG=1
并通过以下方式链接到它:
#pragma comment ( lib, "libpqd.lib" )
库目录是在项目中配置的,库被复制到这个文件夹中,所以我知道它是正确的。
这通常是一个很容易解决的错误,但我不知道该去哪里找了!
postgresql 网站上确实存在一个关于此的线程,但似乎尚未解决:http ://www.postgresql.org/message-id/39E6FC4547C24F9884435E23698B11DC@HIRO57887DE653