Mic*_*ble 7 clr c++-cli header
我有一个C++项目(visual studio 2010),它包含本机代码和c ++/cli代码.我无法使用/ clr编译整个项目,所以我只针对各自的c ++/cli文件进行编译.我的问题是头文件不能用/ clr编译,但我想让一些c ++/cli函数在整个项目中可重用,因此在头文件中定义方法原型,将其包含在我需要它的每个文件中.有解决方案吗?我试图在头文件中定义一些混合代码方法原型,但必须打开/ clr才能进行编译.
这是我的例子:
Test.h
#include <Windows.h>
#include <vector>
#include <string>
using std::vector;
using std::string;
#include <msclr/marshal.h>
#pragma managed
using namespace msclr::interop;
using namespace System;
using namespace System::IO;
using namespace System::Runtime::InteropServices;
public ref class Test
{
public:
int Foo();
};
Run Code Online (Sandbox Code Playgroud)
TEST.CPP
#include "Test.h"
int Test::Foo()
{
return 4;
}
Run Code Online (Sandbox Code Playgroud)
Intellisense抱怨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).
Run Code Online (Sandbox Code Playgroud)
我绝对没有其他地方的重复类"测试",所以我不知道副本来自何处.什么是typelayout信息,为什么它们不一致?