Передайте wstring по ссылке из CLI в Native C ++ - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть проект C#. NET со слоем C ++ / CLI, взаимодействующим с собственным приложением C ++. Я пытаюсь передать строку из моего метода c ++ / cli в собственный метод c ++. Базовая реализация c выглядит следующим образом:

C ++ / CLI

void CLI::CLIClass::GetResults(String^ %param1, String^ %param2)
{
    const std::wstring ws_param1(context.marshal_as<std::wstring>(param1).c_str());
    std::wstring ws_param2(context.marshal_as<std::wstring>(param2).c_str());
    CppEngine::EngineClass::GetResults(ws_param1, ws_param2);


}

C ++ Native

bool EngineClass::GetResults(const std::wstring &param1, std::wstring &param2){

          param2 = doSomething(); //based on param1
          return true;

}

Проблема:

На языке C ++ Символы нежелательной почты нативного уровня принимаются в качестве параметров вместо фактических параметров.

Примечание:

использование wchar_t * на собственном уровне работает нормально, но старается избежать этого, чтобы уменьшить усилия по управлению жизненным циклом.

...