【发布时间】:2013-07-08 01:00:40
【问题描述】:
我正在使用 MSVS 9 (VS 2008)。我的应用程序以及共享库(dll)(我用来链接我的应用程序)也是 c++ 环境。现在观察以下情况:
当共享库/dll 以调试模式构建并且我的应用程序也以调试模式构建时 结果:应用程序成功执行
当共享库/dll 以发布模式构建并且我的应用程序也以发布模式构建时 结果:应用程序成功执行
-
当共享库/dll 以 Release 模式构建并且我的应用程序也以 Debug 模式构建时 结果:应用程序在没有从调用堆栈中加载任何符号的情况下崩溃。
调用栈:
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 情况下工作正常
请帮我解决这个问题。非常感谢任何形式的帮助。
提前致谢。
【问题讨论】:
标签: c++ windows visual-studio visual-studio-2008