Я использую код C# и должен вызывать этот метод внутри dll C++.Вызов метода wstring C++ из C#
static std::wstring DecryptData(const std::wstring& strKey);
Я прочитал много вещей, и мое лучшее предположение было бы передать то, что легче читать на обоих языках, как полукокса массива или даже байт-массив и построить wstring в C++ и строку в C# после.
Кто-нибудь сделал это уже?
Edit:
Я прочитал linkes тема, но ни один из ответов не помогает мне: Использование const
не помогло.
Это то, что я сейчас: C#
[DllImport(DLL_PATH, CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static extern string DecryptData([MarshalAs(UnmanagedType.LPWStr)]string strKey);
C++
extern "C" __declspec(dllexport) const std::wstring DecryptData(const std::wstring& strKey) {
return WlanHelper::CWirelessHelper::DecryptData(strKey);
}
Это дает мне PInvokeStackImbalance =/
Возможный дубликат [Возвратить зЬй :: wstring из C++ в C#] (HTTP: //stackoverflow.com/questions/7051097/return-a-stdwstring-from-c-into-c-sharp) – kevindeleon
Это сводит вторую половину моего вопроса. Но мне также нужно ввести строку C#, и метод ожидает wstring atm. – ecth
'[DllImport (" path.dll ", CharSet = CharSet.Unicode)] static extern string DecryptData ([MarshalAs (UnmanagedType.LPWStr)] string strKey);'? – drf