如何将字符串从/到C++(6.0)发送到C++DLL

how to send string from/To C++ (6.0) to C++ DLL?

本文关键字:C++DLL C++ 字符串      更新时间:2023-10-16

当我向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.