调用类的方法时抛出'System.AccessViolationException'

时间:2013-05-27 11:22:07

标签: c# c++ wpf c++-cli

目前我正在开发一个包含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;
};
  1. 如何在不抛出异常的情况下让程序按预期运行?
  2. 为什么抛出异常?
  3. 如果代码有任何改进或有任何建议可以帮助我解决问题;随时发表评论。

0 个答案:

没有答案