如何从dll中返回std::string类型的字符串,内详!
我在dll中定义一个函数如下
std::string __stdcall GetDllString()
{
std::string str = "hello?";
return str;
}
该函数只是简单的返回一个字符串,我在应用程序中以如下方式调用
void CTest_common_dllDlg::OnBtnConvert()
{
std::string str;
typedef std::string (__stdcall* PFN_GETSTRING)();
HINSTANCE hInst = LoadLibrary("dll.dll");
if (hInst) {
PFN_GETSTRING pfnGetString = reinterpret_cast<PFN_GETSTRING>(GetProcAddress(hInst, "GetDllString"));
if (pfnGetString) {
str = pfnGetString();
}
}
MessageBox(str.c_str());
FreeLibrary(hInst);
}
但是在该按钮函数运行结束后就会发生内存不能为read的错误!
请问各位大侠,这个问题该如何解决,100分不成敬意!
std::string __stdcall GetDllString()
{
std::string str = "hello?";
return str;
}
该函数只是简单的返回一个字符串,我在应用程序中以如下方式调用
void CTest_common_dllDlg::OnBtnConvert()
{
std::string str;
typedef std::string (__stdcall* PFN_GETSTRING)();
HINSTANCE hInst = LoadLibrary("dll.dll");
if (hInst) {
PFN_GETSTRING pfnGetString = reinterpret_cast<PFN_GETSTRING>(GetProcAddress(hInst, "GetDllString"));
if (pfnGetString) {
str = pfnGetString();
}
}
MessageBox(str.c_str());
FreeLibrary(hInst);
}
但是在该按钮函数运行结束后就会发生内存不能为read的错误!
请问各位大侠,这个问题该如何解决,100分不成敬意!
...全文
相关推荐
将Windows字符串资源加载到std :: string或std :: wstring中
在实际编程中,为了提高代码的可重用性,可以封装成一个函数,如`loadStringResource`,它接受资源ID和目标字符串类型(`std::string`或`std::wstring`),然后执行上述步骤
03 C#与C++dll互相传递字符串.rar
例如: ```cpp const char* getGreeting(const char* name) { std::string greeting = "Hello, " + std::string
VB调用VC写的DLL 实现两个字符串相加成一个字符串
**在VB中调用DLL**: - 创建一个新的VB工程,添加一个新模块。 - 使用`Declare`语句声明DLL函数,指定函数名、返回类型、参数类型和DLL路径。
VCCString-int-string-char.txt.rar_conversion_vc string
标题中的"VCCString-int-string-char.txt.rar_conversion_vc string"暗示了我们主要讨论的是VC++中关于字符串与不同数据类型之间的转换,尤其是`std
十六进制字符串和数值相互转换
```cppstd::string intToHexString(int num, int padding = 0) { std::stringstream ss; ss << std::uppercase


