将C ++字符串传递给c#函数

时间:2015-11-02 16:54:08

标签: c# c++ string interop

我在c#中包装了Microsoft的断言类,并希望在c ++中使用该代码。我遇到的问题是必须处理信息字符串,我不太确定如何将c ++字符串传递给c#方法。两者都是管理的。

//c# Assert wrapper
static public bool AreEqual<T>(T expected, T actual, string info){
    //...
    WriteLine(info);
    //...
}

从c ++调用

//c++
void someCppFunc(){
    long expected = 2;
    long actual = 2;
    Assert::AreEqual<long>(expected, actual, L"Some info message");
}

但我得到的错误说它没有匹配的功能。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

只需传递托管字符串而不是原生C ++文件:

//c++/clr
void someCppFunc(){
    long expected = 2;
    long actual = 2;
    Assert::AreEqual<long>(expected, actual, gcnew System::String(L"Some info message"));
}