目前,我正在开发一个包含 C++/CLI 项目(它是本机 C++ dll 的包装器)和 C# WPF 项目(使用 C++/CLI 包装器的功能)的解决方案。
我遇到的问题是,每当我创建一个包装类的实例,然后从该类(在 C# 应用程序中)调用一个方法时,都会遇到一个异常(见下文)。
DeskUpdateManaged.dll 中出现“System.AccessViolationException”类型的未处理异常
附加信息:试图读取或写入受保护的内存。这通常表明其他内存已损坏。
产生错误的代码(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;
};
- 如何在不引发异常的情况下让程序按预期运行?
- 为什么会抛出异常?
- 如果对代码有任何改进或有任何建议可以帮助我解决问题;随时发表评论。