我有一个包含 AES 加密的 c++ dll,该函数有两个输入:字符串:使用 AES 加密字符串:加密输出这是外部函数:extern "C" __declspec(dllexport) void aes_crypter(const char* string_in , wchar_t* string_out);void aes_crypter(const char* string_in , wchar_t* string_out){ std::string X_KEY = "abcdefghijklmnopqrstuvwxyz123412"; std::string X_PSS = "612345601234512"; //////// convert input text to LPCWSTR const wchar_t* inputtext = convertCharArrayToLPCWSTR(string_in); //////// convert LPCWSTR to string [const to string result wrong ] std::wstring ws(inputtext); std::string str(ws.begin(), ws.end()); //////// Encrypt auto encr = encrypt(str, key, X_PSS); //////// Convert and Return to Output String std::wstring widestr = std::wstring(encr.begin(), encr.end()); const wchar_t* output_crypt = widestr.c_str(); /// CONVERT STD TO WCHAR swprintf(string_out, 4096,output_crypt);}代码工作正常,问题出在我的 C# 应用程序中:这是导入功能代码:[DllImport("simpleAES.dll",CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]private static extern void aes_crypter(string string_in, StringBuilder string_out);问题 :如果我将 CharSet 设置为 ANSI,输入字符串工作正常,在 C++ 中返回正确但输出字符串仅返回一个字符错误!如果我将 CharSet 设置为 UNICODE,则输入字符串返回错误且只有一个字符。但是输出字符串返回正确!我哪里出错了?我该如何解决?
1 回答
- 1 回答
- 0 关注
- 108 浏览
添加回答
举报
0/150
提交
取消