目前我正在开发一个包含C ++ / CLI项目(它是本机C ++ dll的包装)和C#WPF项目(使用C ++ / CLI包装器的功能)的解决方案。
我遇到的问题是每当我创建一个包装类的实例然后从类中调用一个方法(在C#应用程序中)时,我遇到了异常(见下文)。
“System.AccessViolationException”类型的未处理异常 发生在DeskUpdateManaged.dll
中附加信息:尝试读取或写入受保护的内存。 这通常表明其他内存已损坏。
产生错误的代码(C#):
MCBiosPackage test = new MCBiosPackage();
test.GetVersionMajor();
GetVersionMajor Method Body(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;
};