首页
社区
课程
招聘
[求助]VC中如何生成供其它工程使用的Obj文件?
发表于: 2007-8-17 07:21 9316

[求助]VC中如何生成供其它工程使用的Obj文件?

2007-8-17 07:21
9316
我想将放多常用函数编译成一个Obj文件,然后在其它工程(VC程序或ASM程序)中使用它,

于是这些函数放在一个CPP文件中,然后编译,VC生成了Obj文件。

但是,当我在其它工程中引入这个Obj文件后,编译时,却出现如下错误,不知什么原因,请大侠们指点指点,小弟谢了。

--------------------Configuration: D1 - Win32 Release--------------------
Linking...
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification
msvcrt.lib(MSVCRT.dll) : error LNK2005: __setmbcp already defined in LIBCD.lib(mbctype.obj)
msvcrt.lib(MSVCRT.dll) : warning LNK4006: __setmbcp already defined in LIBCD.lib(mbctype.obj); second definition ignored
   Creating library Release/D1.lib and object Release/D1.exp
LINK : warning LNK4098: defaultlib "msvcrt.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
Release/D1.exe : fatal error LNK1169: one or more multiply defined symbols found

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶一下... ...
2007-8-18 06:23
0
雪    币: 11705
活跃值: (970)
能力值: ( LV12,RANK:779 )
在线值:
发帖
回帖
粉丝
3
libcd.lib和msvcrt.lib冲突了。
link选项里去掉msvcrt.lib。
或者生成mbctype.obj的时候,不采用libcd.lib。
2007-8-18 19:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
上面发生冲突的lib文件和obj文件,都是系统自动链接的库,link里面根本就没有关于它们的设置,可能不是这方面的原因,很可能是那个CPP文件的头部引用文件设置得不正确,但不知如何引用?
2007-8-18 19:56
0
雪    币: 11705
活跃值: (970)
能力值: ( LV12,RANK:779 )
在线值:
发帖
回帖
粉丝
5
link.exe没有"系统自动链接的库"这一说。
link 都是人为设置的,你仔细检查下选项。
去掉冲突的,比如
/NODEFAULTLIB:libcd.lib

头文件引用是compiler的事,与link这个阶段无关。
2007-8-19 02:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
如楼上指点,我在工程Link选项中,加入:/nodefaultlib:"mfcs42d.lib" /nodefaultlib:"msvcrtd.lib" /nodefaultlib:"mfc42d.lib" /nodefaultlib:"mfco42d.lib" 后,原来出现的冲突信息确实没有了,但又带来了新的错误信息:

--------------------Configuration: D3 - Win32 Debug--------------------
Linking...
LINK : warning LNK4049: locally defined symbol ""protected: static struct AFX_MSGMAP const CWinApp::messageMap" (?messageMap@CWinApp@@1UAFX_MSGMAP@@B)" imported
LINK : warning LNK4049: locally defined symbol ""protected: static struct AFX_MSGMAP const CDialog::messageMap" (?messageMap@CDialog@@1UAFX_MSGMAP@@B)" imported
D3.obj : error LNK2001: unresolved external symbol __afxForceSTDAFX
D3Dlg.obj : error LNK2001: unresolved external symbol __afxForceSTDAFX
StdAfx.obj : error LNK2001: unresolved external symbol __afxForceSTDAFX
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/D3.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.

去掉了那些库,库中的函数现在现在都不认识了???恳请进一步解释,如何解决,谢谢!
2007-8-19 08:13
0
雪    币: 11705
活跃值: (970)
能力值: ( LV12,RANK:779 )
在线值:
发帖
回帖
粉丝
7
你这个cpp文件采用了mfc,所以不能去掉mfc的库。
你不能同时骑2匹马,
要么,用mfc;
要么,不用mfc,使用纯粹的c++ runtime lib.
想在其他工程用的方便,还是不要用mfc.

附件是msdn取的说明。
上传的附件:
2007-8-19 17:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
原来如此,我一直想在Obj文件中也能使用MFC提供的一些功能,看来是不行了。

多谢 readyu 的一再指点!!!
2007-8-19 19:02
0
游客
登录 | 注册 方可回帖
返回
//