首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 引用Dll有关问题

2012-04-07 
C# 引用Dll问题引用了一个封装好的dll(里面的内容无法修改),调用里面的方法运行,前两次没有问题,运行三次

C# 引用Dll问题
引用了一个封装好的dll(里面的内容无法修改),调用里面的方法运行,前两次没有问题,运行三次后会提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”。测试代码如下   :            
[DllImport(@ "C:\dxlapi.dll ")]
                private   static   extern   bool   apiInitLibrary(string   s,   string   ss,   string   sss);
                [DllImport(@ "C:\dxlapi.dll ")]
                private   static   extern   bool   apiFinishLibrary();
                private   void   button1_Click(object   sender,   EventArgs   e)
                {
                        apiInitLibrary(String.Empty,   String.Empty,   String.Empty);
                        apiFinishLibrary();
                }
请问是什么原因,如何解决?

[解决办法]
在没有文档支持的情况下调用非C#编写的DLL是常有奇怪的问题发生,原因就是你在用别人封装好的函数,我在这里说一下个人看法:
第一次执行apiInitLibrary(String.Empty, String.Empty, String.Empty);完成初始化。
第二次执行完毕后变量的相关内存被损坏。
第三次执行报告异常原因。

楼主你确定一下apiInitLibrary能否被重复执行,有些初始化函数是只能执行一次的,执行多次可能会导致错误。

热点排行