.net 使用托管代码而不使用'/clr&x27;调用非托管C++;
我创建了一个基本的C++/CLI库,它有两个类。一个应该是非托管包装,它将通过常规C++实现来调用。CLI项目构建正确,但当我尝试调用它时,会出现错误:“C1190:托管目标代码需要一个“/clr”选项”。 我不想在C++实现上使用CLR选项。我做错什么了吗 C++/CLI代码: ProcessorNative.cpp.net 使用托管代码而不使用'/clr&x27;调用非托管C++;,.net,visual-studio-2012,c++-cli,.net,Visual Studio 2012,C++ Cli,我创建了一个基本的C++/CLI库,它有两个类。一个应该是非托管包装,它将通过常规C++实现来调用。CLI项目构建正确,但当我尝试调用它时,会出现错误:“C1190:托管目标代码需要一个“/clr”选项”。 我不想在C++实现上使用CLR选项。我做错什么了吗 C++/CLI代码: ProcessorNative.cpp #include "StdAfx.h" #include <vcclr.h> #using <mscorlib.dll> #include "PrePro
#include "StdAfx.h"
#include <vcclr.h>
#using <mscorlib.dll>
#include "PreProcessorNative.h"
#include "PreprocessorWrapper.h"
namespace PreprocessorWrapper{
PreProcessorNative::PreProcessorNative(){}
PreProcessorNative::~PreProcessorNative(){}
double PreProcessorNative::Test(double d){
gcroot<PreprocessorWrapper^> _preProcessor = gcnew PreprocessorWrapper();
return _preProcessor->Test(d);
}
}
预处理器包装器
namespace PreprocessorWrapper {
public ref class PreprocessorWrapper
{
private:
public:
PreprocessorWrapper();
double Test(double p);
};
};
预处理器包装器.cpp
#include "stdafx.h"
#include "PreprocessorWrapper.h"
namespace PreprocessorWrapper{
PreprocessorWrapper::PreprocessorWrapper(){
}
double PreprocessorWrapper::Test(double p){
return p*p;
}
}
常规C++代码:
#include "..\Preprocessor_Wrapper\PreprocessorNative.h"
/*Just with the include I get the error, even before I try to use the class*/
S.I已经在.C++项目中添加了.Objfile路径到.c/++项目。
< P>最方便的实现您需要的方法是创建两个项目:管理C++ +CLI和非托管C++包装,如@ CICADA建议的。您还可以将相同的源保存在相同的文件中,并使用#pragma managed
和#pragma unmanaged
对它们进行分割。和@ HANS PANTEND是正确的,您混淆了C++和C++/CLI的语法。< /P>您完全反转了PROCEPROSTROR WRAPPER。CPP(没有/CLR的精细)和Primor No.VC++(/CLR需要)。
#include "..\Preprocessor_Wrapper\PreprocessorNative.h"
/*Just with the include I get the error, even before I try to use the class*/