[英]how to send string from/To C++ (6.0) to C++ DLL?
當我向我的DLL發送文本並將其作為char*
接收時,會發生一些奇怪的事情; 如果文本少於13個字符或大於77個字符,則返回的文本是垃圾!
這是我的代碼: -
//(1)DLL函數:
char* __stdcall ApplyArabicMapping( char* input)
{
// 1-Conver char* to string
std::string inputString = input;
// 2-Calling our function
string encodedStr = Encoding::arabicHandling(inputString);
// 3-Convert from String to char*
char* returnStr = (char*)encodedStr.c_str();
return (returnStr);
}
//(2)從C ++控制台應用程序調用:
char* inputStr = "Some text";
char* resutls = ApplyArabicMapping(inputStr);
當ApplyArabicMapping()
返回時,正在銷毀encodedStr
時返回懸空指針,從而導致未定義的行為 。
要更正,請盡可能返回std::string
或使用new
復制char*
緩沖區並將其返回:調用者必須在不再需要時delete[]
:
char* returnStr = new char[encodedStr.length() + 1];
std::copy(encodedStr.begin(), encodedStr.end(), returnStr);
*(returnStr + encodedStr.length()) = 0; // null terminate.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.