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

标签 c++ string dll

当我向我的 DLL 发送文本并以 char* 形式接收它时,发生了一些奇怪的事情;如果文本少于 13 个字符或多于 77 个字符,则返回的文本是垃圾!

这是我的代码:-

//(1)动态链接库函数:

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.

关于c++ - 如何将字符串从/发送到 C++ (6.0) 到 C++ DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991588/

相关文章:

c++ - 如何使用软件程序(如yahoo messenger)向手机发送短信?

C# Activator.CreateInstance() 丢弃 "Cannot create an abstract class"异常

c# - 已编译 DLL 中的测试方法和测试类

windows - 在 Delphi 中获取 DLL 调用者信息

c++ - 当全局/静态对象崩溃时创建对象,而本地对象则不会

c++ - 在包含多个字符串的多个对象中查找子字符串

javascript - 使用 Javascript 在不反转特殊字符的情况下反转字符串

iphone - 如何将 NSString 截断为设定的长度?

c# - 如何从 C++/C# 与 silverlight 网站交互

Python - 使用未知分隔符拆分数值字符串