如何在Visual Studio中的多个项目下的不同运行时环境中使用CLR?

时间:2009-06-05 11:53:37

标签: c++ visual-studio visual-c++ clr

这是我的情景。

我在visualstudio中有一个包含15个项目的现有解决方案。

在某些项目中,我需要使用托管c ++扩展。首先,我有一个示例解决方案的解决方案包含4个项目,我已经维护了依赖项。

我的解决方案也在建设中。

我通过添加包含托管代码的额外项目将相同的过程应用于现有解决方案。因此我在调用项目中启用了CLR(我从现有的 ex:demoproj 调用新添加的项目方法)以及包含main()的项目,并将运行时从/ mtd(现有的包含/ mtd)更改为/ mdd。

当我构建 demoproj 时,它会完全成功。但是当我构建包含main()的项目时,它会产生很多错误,比如

LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library

LIBCMTD.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(crt0.obj) : error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj)

LIBCMTD.lib(fclose.obj) : error LNK2005: _fclose already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(printf.obj) : error LNK2005: _printf already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(mbstowcs.obj) : error LNK2005: _mbstowcs already defined in MSVCRTD.lib(MSVCR80D.dll)


我发现这是因为使用/ clr选项我想任何想法???

但是我的测试解决方案没有发生这种情况。如何解决这个问题

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

使用导入库链接到的所有dll必须与应用程序具有相同的设置,以便链接到运行时库。错误表明您将运行时的使用混合为.dll(MSVCRTD)和.lib(LIBCMTD)。