Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用托管代码而不使用'/clr&x27;调用非托管C++;_.net_Visual Studio 2012_C++ Cli - Fatal编程技术网

.net 使用托管代码而不使用'/clr&x27;调用非托管C++;

.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

我创建了一个基本的C++/CLI库,它有两个类。一个应该是非托管包装,它将通过常规C++实现来调用。CLI项目构建正确,但当我尝试调用它时,会出现错误:“C1190:托管目标代码需要一个“/clr”选项”。 我不想在C++实现上使用CLR选项。我做错什么了吗

C++/CLI代码:

ProcessorNative.cpp

#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*/