我正在使用 MSVS 9 (VS 2008)。我的应用程序以及共享库(dll)(我用来链接我的应用程序)也是 c++ 环境。现在观察以下情况:
当共享库/dll以调试模式构建并且我的应用程序也以调试模式构建时结果:应用程序执行成功
当共享库/dll以发布模式构建并且我的应用程序也以发布模式构建时结果:应用程序成功执行
当共享库/dll 在发布模式下构建并且我的应用程序也在调试模式下构建时结果:应用程序在没有从调用堆栈加载任何符号的情况下崩溃。
调用栈:
ntdll.dll!76e94684()
[下面的帧可能不正确和/或丢失,没有为 ntdll.dll 加载符号]ntdll.dll!76e7d55f()
ntdll.dll!76e5fa18()
ntdll.dll!76e2b3c8()
当我尝试在我的应用程序中使用以下 SetName() 和 GetName() 定义时,会出现此问题。
using namespace std;
void main()
{
Schema * schemaExp = new Schema();
schemaExp -> SetName("ExpSchema");
string srctable;
srctable=schemaExp->GetName();
cout <<"\nConnection EXPORT using the target table:" << srctable.c_str() << endl;
delete schemaExp;
}
模式类定义:
using namespace std;
class Schema
{
public:
TELAPI_EXPORT void SetName(char *name);
TELAPI_EXPORT string GetName();
protected:
string tableName;
};
void Schema::SetName(char *name)
{
string str(name);
tableName = str;
}
string Schema::GetName()
{
return tableName;
}
注意:以上只是我的应用程序的一部分,我的应用程序仅在 #3 中崩溃,并且在上面的 #1 和 #2 情况下工作正常
请帮我解决这个问题。非常感谢任何形式的帮助。
提前致谢。