C++ 从v100调用时在平台工具集v140 DLL上写入访问冲突

C++ 从v100调用时在平台工具集v140 DLL上写入访问冲突,c++,visual-studio-2010,dll,visual-studio-2015,access-violation,C++,Visual Studio 2010,Dll,Visual Studio 2015,Access Violation,我有一个用VS2015编写的DLL,带有平台工具集:Visual Studio 2015(v140)。 此DLL包括以下函数: std::string GetUserPoints(std::string ownerid); 我已经用VisualStudio2010创建了一个win32控制台应用程序,并尝试调用这个“GetUserPoints”函数 当GetUserPoints试图返回字符串值时,我会遇到运行时访问冲突 我尝试将此GetUserPoints更改为: int GetUserPoin

我有一个用VS2015编写的DLL,带有平台工具集:Visual Studio 2015(v140)。 此DLL包括以下函数:

std::string GetUserPoints(std::string ownerid);
我已经用VisualStudio2010创建了一个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]


Visual C++的所有版本都有自己的StruDand库的实现,它们不是很相似,实际上它们很可能是不同的。 由于不兼容,建议不要在DLL接口中指定标准库元素


在程序和/或Dll的内部,您可以毫无问题地使用它们。但是当与其他人进行交互时,你必须在实现上达成一致。

ooooo,我所需要的就是同时更改输入(std::string ownerid),可惜我错过了。谢谢