現在、C++/CLI プロジェクト (ネイティブ C++ dll のラッパー) と C# WPF プロジェクト (C++/CLI ラッパーの機能を使用) を含むソリューションに取り組んでいます。
私が抱えている問題は、ラッパー クラスのインスタンスを作成し、そのクラスから (C# アプリケーション内で) メソッドを呼び出すたびに、例外が発生することです (以下を参照)。
タイプ 'System.AccessViolationException' の未処理の例外が DeskUpdateManaged.dll で発生しました
追加情報: 保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています。
エラーを生成するコード (C#):
MCBiosPackage test = new MCBiosPackage();
test.GetVersionMajor();
GetVersionMajor メソッド本体 (C++/CLI):
System::String^ MCBiosPackage::GetVersionMajor()
{
return gcnew System::String(pBiosPackage->GetVersionMajor());
}
MCBiosPackage クラス インターフェイス (C++/CLI):
public ref class MCBiosPackage
{
public:
MCBiosPackage(void);
MCBiosPackage(MCBiosPackage^);
MCBiosPackage(MCBiosPackage%);
MCBiosPackage(CBIOSPackage*);
MCBiosPackage(CBIOSPackage&);
~MCBiosPackage(void);
MCBiosPackage% operator=(MCBiosPackage^);
MCBiosPackage% operator=(MCBiosPackage%);
MCBiosPackage% operator=(CBIOSPackage*);
MCBiosPackage% operator=(CBIOSPackage&);
System::String^ GetDescription();
System::String^ GetVersionMajor();
System::String^ GetDateFormatted();
System::UInt32^ GetFileSize();
CBIOSPackage* GetObj(void);
private:
CBIOSPackage *pBiosPackage;
};
- 例外がスローされることなく、意図したとおりにプログラムを実行するにはどうすればよいですか?
- 例外がスローされるのはなぜですか?
- コードの改善点や問題の解決に役立つ提案がある場合は、お気軽にコメントしてください。