У меня есть DLL, написанная на VS2015, с набором инструментов для платформы: Visual Studio 2015 (v140). этой DLL включает следующие функции:Нарушение прав доступа на платформе toolset v140 DLL при вызове из v100
std::string GetUserPoints(std::string ownerid);
Я создал консольное приложение win32 с помощью Visual Studio 2010, и попыталась вызвать эту функцию «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 ];
OOOO, мне нужно было также изменить ввод (std :: string ownerid), слишком плохо, что я пропустил это. благодаря! – Joseph