C#.net调用动态库dll注意事项
C#.net调用动态库dll注意事项 本文主要描述作者在工作中所遇到技术难点及问题,最后提出相关的解决方案 场景 公司有个业务需求涉及到ID读卡器,构建成在ID卡读卡器一刷ID卡,系统就自动显示其ID卡号以及该ID卡的基本信息和消费的记录等信息; 问题 在选购相关的ID读卡器产品后,下载其开发包其中包含了用C++语言开发的动态库DLL,在调用时出现以下问题: 1、无法加载 DLL“OUR_IDR.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。 2、尝试读取或写入受保护的内存。这通常指示其他内存已损坏 解决方案 1、第一个问题“无法加载 DLL“OUR_IDR.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。”,解决很简单,具体方法是将 dll复制到应用程序中的bin目录即可。 2、 我在调用以下代码时: [DllImport( " OUR_IDR.dll " )] public static extern byte [] idr_read( byte [] pserial); 就出现错误“尝试读取或写入受保护的内存。这通常指示其他内存已损坏 ”。 解决方法是将byte[]改为IntPtr即可,如: [DllImport( " OUR_IDR.dll " )] public static extern