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 のケースでは正常に動作しています
この問題を解決するのを手伝ってください。どんな種類の助けも大歓迎です。
前もって感謝します。