Visual Studio 2015(v140)のプラットフォームツールセットを使用してVS2015で書かれたDLLがあります。 このDLL、次の機能が含まれます。プラットフォームツールセットv140のアクセス違反書き込みv100からの呼び出し時
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 ];
OOOO、私も必要なのは、入力(std :: string ownerid)も変更することでした。ありがとう! – Joseph