簡體   English   中英

如何從/到C ++(6.0)發送字符串到C ++ DLL?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM