请教一个链接一个需要MFC支持的LIB库出现的问题
答案:2 悬赏:10
解决时间 2021-12-23 11:03
- 提问者网友:离殇似水流年飞逝
- 2021-12-23 01:43
请教一个链接一个需要MFC支持的LIB库出现的问题
最佳答案
- 二级知识专家网友:蜜罐小熊
- 2021-12-23 03:14
链接器工具错误:在对象中已定义符号
以修饰形式显示的给定 symbol 被多次定义。
可能的原因 :
1 不慎同时与单线程库和多线程库链接。确保应用程序项目文件只包括适当的库,并且任何第三方库已适当创建了单线程或多线程版本。
2 在也使用 /clr 时混合静态库和动态库。
3 该符号为封装函数(通过用 /Gy 编译创建),包含在多个文件中,但在各编译间已改变。重新编译所有包含 symbol 的文件。
4 以不同的形式在不同库中的两个成员对象中定义了该符号,并且使用了这两个成员对象。
5 某个绝对符号被定义两次,而每次定义的值不同。
6 头文件声明并定义了变量。
7 当将 uuid.lib 与定义 GUID 的其他 .lib 文件(例如 oledb.lib 和 adsiid.lib)一起使用时。
我下载了一个库,并按照提示(可能不完全照做了,因为看不太明白):
运行buildLib.bat这个批处理文件,生成了.lib和.h。
在VC的菜单:Project->Settings->Link->General中,在Debug配置信息中加ltilib.lib,在Release配置信息中加rltilib.lib
在VC的菜单:Project->Settings->C/C++->Preprocessor->Additional include directories中,在所有配置信息(Debug和Release),加ltilib\lib\headerFiles
在VC的菜单:Project->Settings->C/C++->C++ Language:Enable RTTI,在选项前面打勾。
然后编译.便出现问题了.
我觉得问题可能出在下列这段话.我不明白啊.请两位高手详细解释一下,行吗?
by default the lib is built with the option /MD resp. /MDd, i.e. the multi-threaded-dll run-time libraries are used. This means that MFC must be linked dynamically. However, if you need to use MFC in a static lib (not recommended), then you must set the variable v_buildDLLversion=0 in the Perl script createMakefile.pl before hand.
以修饰形式显示的给定 symbol 被多次定义。
可能的原因 :
1 不慎同时与单线程库和多线程库链接。确保应用程序项目文件只包括适当的库,并且任何第三方库已适当创建了单线程或多线程版本。
2 在也使用 /clr 时混合静态库和动态库。
3 该符号为封装函数(通过用 /Gy 编译创建),包含在多个文件中,但在各编译间已改变。重新编译所有包含 symbol 的文件。
4 以不同的形式在不同库中的两个成员对象中定义了该符号,并且使用了这两个成员对象。
5 某个绝对符号被定义两次,而每次定义的值不同。
6 头文件声明并定义了变量。
7 当将 uuid.lib 与定义 GUID 的其他 .lib 文件(例如 oledb.lib 和 adsiid.lib)一起使用时。
我下载了一个库,并按照提示(可能不完全照做了,因为看不太明白):
运行buildLib.bat这个批处理文件,生成了.lib和.h。
在VC的菜单:Project->Settings->Link->General中,在Debug配置信息中加ltilib.lib,在Release配置信息中加rltilib.lib
在VC的菜单:Project->Settings->C/C++->Preprocessor->Additional include directories中,在所有配置信息(Debug和Release),加ltilib\lib\headerFiles
在VC的菜单:Project->Settings->C/C++->C++ Language:Enable RTTI,在选项前面打勾。
然后编译.便出现问题了.
我觉得问题可能出在下列这段话.我不明白啊.请两位高手详细解释一下,行吗?
by default the lib is built with the option /MD resp. /MDd, i.e. the multi-threaded-dll run-time libraries are used. This means that MFC must be linked dynamically. However, if you need to use MFC in a static lib (not recommended), then you must set the variable v_buildDLLversion=0 in the Perl script createMakefile.pl before hand.
全部回答
- 1楼网友:虚伪的现实
- 2021-12-23 03:37
什么问题?
再看看别人怎么说的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯