У меня есть метод 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 переменные ...
Благодаря поддержке