我有一个C++项目(visual studio 2010),它也包含本机代码和C++/cli代码。我不能用/ clr编译整个项目,所以我只是为相应的C++/cli文件做这件事。我的问题是头文件不能用/ clr编译,但是我想在整个项目中重新使用一些C++/cli函数,因此在头文件中定义方法原型以将其包含在每个需要它的文件中。有解决方案吗?我试图在头文件中定义一些混合代码方法原型,但必须打开/ clr才能编译。C++/cli接口头文件
这是我的例子:
Test.h
Test.cpp的
#include "Test.h"
int Test::Foo()
{
return 4;
}
智能感知与误差Test.h抱怨像C++/CLI必须启用使用#using。但我认为这是微不足道的,它会编译。
编译与链接错误(SRY,我有德国VS版本)
Fehler 6 error LNK1255: Fehler bei Verknüpfung aufgrund von Metadatenfehlern.
Fehler 4 error LNK2022: Fehler bei Metadatenoperation (8013118D) : Duplizierte Typen (_PROPSHEETPAGEA) wurden gefunden, aber die Typenlayoutinformationen sind nicht konsistent: (0x02000198).
Fehler 5 error LNK2022: Fehler bei Metadatenoperation (8013118D) : Duplizierte Typen (_PROPSHEETPAGEW) wurden gefunden, aber die Typenlayoutinformationen sind nicht konsistent: (0x020001d1).
我绝对没有一个重复类“测试”别处中止,所以我不知道在哪里重复从何而来。什么是布局信息以及它们为什么不一致?
如何用/ clr编译部分项目而不编译?为什么你的本地代码不能用于/ clr? – svick
它是一个3dsMax插件,用/ clr编译整个项目并不行,我收到了很多错误。 Autodesk推荐的方法是仅编译/ clr的C++/cli代码部分。对于每个.cpp文件,您可以在属性中设置“使用公共语言运行库”。 – Michbeckable
你能发表一个头文件的简洁例子,并使用不能编译的cpp文件吗?另外,头文件是由/ clr cpp和non/clr cpp使用的吗? –