要点:

当试图使用编组到字符串数据传递到从C#中的C ++ DLL,我发现了

  

'msclr ::互操作:: error_reporting_helper <_To_Type,_From_Type> :: marshal_as':   这种转换不支持   库或所需要的标头文件   此转换不包括在内。   请参阅文档上   “如何:扩展编组   库”添加自己   编组方法。 C:\程序   文件\微软的Visual Studio   9.0 \ VC \包括\ msclr \ marshal.h 203

我使用Visual Studio 2008专业版;视觉C ++ 2008; .NET 3.5。

详情:

有关(在其最简单的形式)的方法如下:

LibDSSDLL::DssOutputSocketFacade::DssOutputSocketFacade(const System::String^ name)
{
    marshal_context^ context = gcnew marshal_context();
    std::string n = context->marshal_as<std::string>(name);

    this->socket = new DssOutputSocket( n);
}

报头包括在他们的顺序被呈现给预处理器是

#include "StdAfx.h"
#include <string>
#include <iostream>
#include <msclr\marshal_cppstd.h>

#using <mscorlib.dll>
using namespace System;
using namespace msclr::interop;

这在我看来就像它符合例子列举这里并在MSDN文档(栈溢出,拒绝让我举一个第二URL);然而显然C ++编译器未找到其需要的转化率。

有什么我错过了?我承认我不是很专家,C ++或Windows。

有帮助吗?

解决方案

在文档没有说明它需要的常量字符串^。取出常量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top