【发布时间】:2016-05-08 15:09:50
【问题描述】:
我有一个用 VS2015 编写的 DLL,带有平台工具集:Visual Studio 2015 (v140)。 该 DLL 包含以下函数:
std::string GetUserPoints(std::string ownerid);
我用visual studio 2010创建了一个win32控制台应用程序,并尝试调用这个“GetUserPoints”函数!
当 GetUserPoints 旨在返回字符串值时,我遇到了运行时访问冲突。
我尝试将此 GetUserPoints 更改为:
int GetUserPoints(std::string ownerid, char*& output)
{
if (l_RestLowLevel != NULL) {
std::string str = utility::conversions::to_utf8string(l_RestLowLevel->GetUserCameraPoints(utility::conversions::to_string_t(ownerid)));
// Dynamically allocate memory for the returned string, +1 for terminating NULL
output = new char[str.length()+1];
// Copy source string in dynamically allocated string buffer
strncpy_s(output, str.length() + 1, str.c_str(), str.length());
return str.size();
}
return 0;
}
但我得到一个运行时“访问冲突写入”异常:
输出 = 新字符[str.length()+1];
【问题讨论】:
标签: c++ visual-studio-2010 dll visual-studio-2015 access-violation