C++ 如何将字符串从/发送到C++;(6.0)至C++;动态链接库?

C++ 如何将字符串从/发送到C++;(6.0)至C++;动态链接库?,c++,string,dll,C++,String,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 strin

当我将文本发送到我的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*
缓冲区并返回它:当不再需要时,调用者必须
删除[]

char* returnStr = new char[encodedStr.length() + 1];
std::copy(encodedStr.begin(), encodedStr.end(), returnStr);
*(returnStr + encodedStr.length()) = 0; // null terminate.

您是否在调试器中运行它并逐步查看代码以了解发生了什么?请提供一些有关如何发送和接收文本的示例代码。