设置首页 收藏本站
积木网首页 - 学院 - 技术百科 - 问答 - 黄页 - 手册 - 站长工具 - 社区
    
群组 >> C#开发

C#开发

共有2270位成员   人气指数 -   最新排名 -

【话题】C#调用DLL,出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

2009-04-22 20:55:03 来自:曹雨萌 浏览数:136
代码如下:
        [DllImport("wsnmp32.dll")]
        public static extern SNMPAPI_STATUS SnmpStrToOid(StringBuilder str, ref SMIOID oid);
                    StringBuilder name2 = new StringBuilder(256);
                    name2.Append("1.3.6.1.2.1.2.2.1.16");
                    SnmpAPI.SnmpStrToOid(name2, ref Oid);
使用果网上很多方法都不行,SnmpAPI.SnmpStrToOid总会抛出“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”这个异常。请问各位高手怎么解决,谢谢,分数不够可以另开贴加分
 
幼儿园小班回复于22日21点14分 
确认一下参数的数据类型,保证正确.
 
默封晨回复于22日21点38分 
不要沉啊,十万火急啊
 
caiximing0回复于22日22点01分 
楼上提供的结构体不能通过编译啊,按3楼的改法也不行
 
Java学子回复于22日22点22分 
C# code [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct SMIOID { [System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.I4)] public uint size; public IntPtr dwords; }
其实这个真是要你自己去多试了
 
嘉虎9D回复于22日22点45分 
最后一个结构体 最后一个结构体没错把.
 
王显阳回复于22日23点00分 
参数应该是正确的,因为有试过能成个调用的,不过差不多100次就出1次这样的错误,这明显不能接受,而且我试过用string,char[]都可以执行,如果给的参数为空,是没有问题的
 
吕保涛回复于22日23点20分 
我也遇到过,后来放弃了
 
hxf妈妈回复于22日23点43分 
    [System.Runtime .InteropServices .UnmanagedType.Struct]
    [StructLayout(LayoutKind.Sequential)]
    public struct SMIOID
    {
        [System.Runtime .InteropServices .UnmanagedType.I4]
        public uint size;
        public IntPtr dwords;
    }
 
zz公主回复于23日03点00分 
结构体原型
    [StructLayout(LayoutKind.Sequential)]
    public struct SMIOID
    {
        public uint size;
        public IntPtr dwords;
    }
 
汪逸玮回复于23日03点32分 
C/C++ code C++ SNMPAPI_STATUS SnmpStrToOid( __in LPCSTR string, __out smiLPOID dstOID );

对应的把ref 改成 out试试
C# code [DllImport("wsnmp32.dll")] public static extern SNMPAPI_STATUS SnmpStrToOid(StringBuilder str, out SMIOID oid); StringBuilder name2 = new StringBuilder(256); name2.Append("1.3.6.1.2.1.2.2.1.16"); SnmpAPI.SnmpStrToOid(name2, out Oid);

然后确保你的SMIOID 结构体的定义也进行了转化,很多时候是你的结构体原型的问题,最好把它也贴上来。

C#开发的其他话题...

网址导航网站分类目录积木 TinyMCE 服务邮箱: Gimoohr(#)gmail.com
Copyright © 2008 Gimoo.Net  京ICP备05050695号