在C#编写的程序中调用一个C++编写的DLL文件,调试之后没有问题,我想把程序放到别的电脑上(已经安装了.net Framework)运行,我生成了release版本的.exe,运行之后,报错如下:///////////////////////////////////////
有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。************** 异常文本 **************
System.DllNotFoundException: 无法加载 DLL“DataMatrixEncoder.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
   在 MagicCube_v2_Demo.DataMatrix.dataMatrixEncode(String barcode, Int32 barsize)
   在 MagicCube_v2_Demo.DataMatrix.CreateCode(String codestr) 位置 C:\Documents and Settings\zhanghuazhong\桌面\ImageClassify\图像分类\水印提取\DataMatrix.cs:行号 46
   在 图像分类.frm_AddWM.btn_create_Click(Object sender, EventArgs e) 位置 C:\Documents and Settings\zhanghuazhong\桌面\ImageClassify\图像分类\图像分类\Form1.cs:行号 72
   在 System.Windows.Forms.Control.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnClick(EventArgs e)
///////////////////////////////////////////我在程序中是通过DllImport导入DataMatrixEncoder.dll文件的。请大家指教,急!

解决方案 »

  1.   

    这类问题,一般有一下方面的原因:1、路径指定不正确:
       [DllImport("ExamDll.dll", EntryPoint = "test")]
       private static extern bool dll_test(bool param);   这是相对路径的写法,你的dll要把放在bin目录下!
       一个保险的做法,用绝对路径:
       [DllImport(@"E:\pvcs\utscada\Debug\ExamDll.dll", EntryPoint = "test")]
       private static extern bool dll_test(]bool param);2、缺少相关依赖的dll:
       如果按1的做法,还是报这个错误,最有可能的就是C++的dll还依赖其他的dll,
       你要DEPENDS.EXE工具打开看看依赖哪些dll,都拷贝到bin目录下!
       
      

  2.   

    我今天也有这个问题 anselm90 你解决了吗?