Преобразуйте System :: String ^ в wchar_t в оболочке C ++, которая оборачивает C # .Net DLL - PullRequest
2 голосов
/ 19 марта 2019

У меня есть метод C # .Net DLL, который обернут в метод C ++.

Я должен сделать это, потому что DLL должен быть использован во внешней программе ( Metatrader4 ) ион может управлять только собственным типом данных C ++.

В данный момент я могу сделать вызов, все работает нормально, но я не знаю, как вернуть переменную исключения в оболочку C ++.

Это код:

Метод C # .Net

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

Метод C ++ (Wrapper)

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);
}

Если я попытаюсь вызватьDLL из внешней программы (Metatrader4), метод работает нормально, но я не могу получить обратно исключительную переменную ...

Я не знаю, как поступить с System :: String и wchar_t переменные ...

Благодаря поддержке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...