libpq作为静态库的LNK2005
LNK2005 with libpq as static library
我正在编写一个应用程序,通过静态库链接所有第三方代码(包括tinyxml2, sqlite3, openssl和libpq);当我尝试链接到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。使用/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
在将项目转换为/MDd时有问题后,我决定进入源代码。
<your_path>postgresql-9.2.4srcportwin32error.c
->注释掉,或者#if 0
将函数_dosmaperr
注释掉。
生成库,应用程序运行良好。
执行grep -R _dosmaperr ./
只显示了这一个方法;但是include/port/win32.h
和include/pg_config_os.h
都有它作为外部变量
对我的头脑来说有点晚了,所以现在已经足够好了!
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- #为""定义宏;静态";针对不同的上下文
- cmake如何在fedora工作站中找到boost静态库包
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 将公共但非静态的成员函数与ALGLIB集成
- cmake在我的项目中所需的所有静态库都不成功
- C++从另一个类访问公共静态向量的正确方法是什么
- 基于boost的程序的静态链接——zlib问题
- 在静态库中嵌入类方法
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 如何在C++中获得"静态纯虚拟"功能?
- 私有类型的静态常量成员
- 使用gcc从静态链接的文件中查找可选符号
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 如何在C++中使用非静态成员函数作为回调函数
- 将静态库链接到不带-fPIC的共享库中
- 静态结构和一个定义规则
- 如果两个静态库使用相同的另一个静态库,如何避免"LNK2005 Already Defined error"?
- Visual Studio链接器在尝试使用DLL中的静态库时出错(LNK2038、LNK2005)
- libpq作为静态库的LNK2005