在包装C#.Net DLL的C ++包装器中,将System :: String ^转换为wchar_t

时间:2019-03-19 16:36:43

标签: c# .net c++-cli

我有一个用C ++方法包装的C#.Net DLL方法。

我必须这样做,因为该dll必须在外部程序( Metatrader4 )中使用,并且它只能管理C ++本机数据类型。

此刻,我可以进行调用了,一切正常,但是我不知道如何将异常变量返回给C ++包装器。

这是代码:

C#.Net方法

public int MT4_Order_pushToFirebase(string firebaseJsonUrl , string accountString ,string orderString,ref string exception) {
exception = "some error";
}

C ++方法(包装程序)

public: int __clrcall MT4_Order_pushToFirebase(wchar_t * firebaseJsonUrl, wchar_t * accountString, wchar_t * orderString, wchar_t * exception) {

            System::String^ S_firebaseJsonUrl = gcnew System::String(firebaseJsonUrl);
            System::String^ S_accountString = gcnew System::String(accountString);
            System::String^ S_orderString = gcnew System::String(orderString);
            System::String^ S_exception = gcnew System::String(exception);

            int res = robin->MT4_Order_pushToFirebase(S_firebaseJsonUrl, S_accountString, S_orderString, S_exception);                      

            return res;
        }

extern int MT4_Order_pushToFirebase(wchar_t * firebaseJsonUrl, wchar_t * accountString, wchar_t * orderString, wchar_t * exception) {
    RobinHoodCWrapper::RobinHoodCWrapper c;
    return c.MT4_Order_pushToFirebase(firebaseJsonUrl, accountString, orderString, exception);
}

如果我尝试从外部程序(Metatrader4)调用DLL,则该方法可以正常工作,但是我无法获取异常变量...

我不知道如何处理 System :: String wchar_t 变量...

感谢支持

0 个答案:

没有答案