Tag: linker errors

VC ++在解决方案中从非/ clr项目的函数调用/ clr项目的函数

在提出这个问题之前我提到了这个有点类似的问题 ,但无法解决我的问题 我正在寻找一个包含许多解决方案的旧应用程序。 问题出现在其中一个解决方案中(比如说S)。 情况如下: S中的项目(比如说P1)包含所有C / C ++文件,需要调用C#函数 由于P1也包含.c文件,我不能使用/clr选项 如果我将P1中的.c文件编译为.cpp文件,那么它会产生大量错误,我不打算更改旧版.c文件中的源代码 所以我创建了另一个启用了/clr项目(比如P2),并为函数声明创建了一个头文件,为函数定义创建了一个.cpp文件; C#呼叫是在它下面进行的; P2编译好 请注意,P1是.dll,P2是作为静态库创建的; 在P1的“框架和参考”中提到了P2 和警告: 警告LNK4098:defaultlib’MSVCRT’与使用其他库冲突; 使用/ NODEFAULTLIB:库 现在有了这些,我在P1中得到3个链接器错误: 错误LNK2005:已在libcmtd.lib(typinfo.obj)中定义的“private:__thiscall type_info :: type_info(class type_info const&)”(?? 0type_info @@ AAE @ ABV0 @@ Z) 错误LNK2005:已在libcmtd.lib(typinfo.obj)中定义的“private:class type_info&__thiscall type_info :: operator =(class type_info const&)”(?? 4type_info @@ AAEAAV0 @ ABV0 @@ Z) 错误LNK1169:找到一个或多个多重定义的符号 许多在线论坛(包括本网站)都提供此错误。 但不知怎的,我在尝试这些选项后无法修复它(我是.NET框架的新手)。 重要的是,即使我从P2中删除了C#代码,也会出现相同的错误。 修复它的正确方法是什么? 更新 […]