Маршалинг строк с C++ на C#:«конвертация не поддерживается библиотекой»

StackOverflow https://stackoverflow.com/questions/1645145

Вопрос

Краткое содержание:

При попытке использовать маршалинг для передачи строковых данных в C++ DLL из C# я получаю

'msclr::interop::error_reporting_helper<_To_Type,_From_Type>::marshal_as':Это преобразование не поддерживается библиотекой или файл заголовка, необходимый для этого преобразования, не включен.Пожалуйста, обратитесь к документации «Как:Расширьте библиотеку маршалирования «для добавления своего собственного метода маршалирования.C: Program Files Microsoft Visual Studio 9.0 vc include msclr marshal.h 203

Я использую Visual Studio 2008 Professional Edition;Визуал С++ 2008;.Нет 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 (Stack Overflow отказывается позволить мне указать второй URL-адрес);однако очевидно, что компилятор C++ не находит нужного ему преобразования.

Что я пропустил?Признаюсь, я не очень разбираюсь в C++ и Windows.

Это было полезно?

Решение

В документации не сказано, что это требует константа Строка^.Удалите константу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top