刚接手到一个ic卡项目,需要用到新的协议,不过刚调用这个ZLG600Lib.dll就报尝试读取或写入受保护的内存。这通常指示其他内存已损坏。不知道有没有大佬知道解决方法文档和一个c++的demo放在下面的百度云里面,ZLG600Lib.dll在ZLG600A_pcdemo.zip里面
链接:https://pan.baidu.com/s/1up3z-YpfJ0NJD8O-QOz30Q 密码:tpbq

解决方案 »

  1.   

    为什么要用DLL,代码都是开源的,直接就用源码
      

  2.   

    要看对方导出dll的声明
    可能是_cdecl协议,你在DllImport里可以显式声明,默认是_stdcal
      

  3.   

    定义DllImport时,如果API和字符相关的API,
    需要显式声明字符集
    c#默认使用Unicode,而很多c/c++的Dll默认采用多字节
    [DllImport("your_dll", EntryPoint = "your_func", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]