通过引用将wstring从CLI传递到本机C ++

时间:2020-02-06 04:32:11

标签: c++ visual-c++ c++-cli

我有一个带有C ++ / CLI层与C ++本机应用程序交互的C#.NET项目。我试图将字符串从我的c ++ / cli方法传递给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 ++原生

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

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

}

问题:

在c ++原生级别上,垃圾字符作为参数而不是实际参数被接收。

注意:

在本机级别使用wchar_t *可以正常工作,但是尝试避免使用它,以减少生命周期管理工作。

0 个答案:

没有答案