我有一个带有两个项目的VS 2010 C ++解决方案,一个生成DLL,另一个是DLL函数的驱动程序。以下所有代码
char cstring [256];
strcpy (cstring, "C String");
std::string string1 = "Test String";
std::string string2 (string1);
std::string string3;
string3.assign (cstring);
在司机中工作得很好。但是如果相同的代码放在DLL项目的任何位置,则string1,string2和string3都不能成功分配任何值。大多数情况下,调试器将它们显示为Bad Ptr。它看起来没有很好地分配在内存中。
我试图将std :: string作为类成员字段,自动变量和静态变量。但是这些方法都没有按预期工作。谁能帮助我找出原因?
答案 0 :(得分:0)
我认为其原因是缺乏应用程序二进制接口标准(ABI)。这篇文章完美地描述了这个问题: How do I pass objects especially stl objects to and from a dll
它也可能是'属性>> c / c ++>>代码生成>>运行时库设置' (/ MT和/ MD设置)您需要确保库项目和使用项目是相同的。