关于C#调用C++编写的DLL的问题,找不到指定模块

anselm90 2011-11-30 04:08:29
在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文件的。

请大家指教,急!
...全文
316 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
清祥 2011-12-01
  • 打赏
  • 举报
回复
我今天也有这个问题 anselm90 你解决了吗?
烟波钓 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sdl2005lyx 的回复:]
这类问题,一般有一下方面的原因:

1、路径指定不正确:
[DllImport("ExamDll.dll", EntryPoint = "test")]
private static extern bool dll_test(bool param);

这是相对路径的写法,你的dll要把放在bin目录下!
一个保险的做法,用绝对路径:
[DllImport(@"……
[/Quote]+++
sdl2005lyx 2011-11-30
  • 打赏
  • 举报
回复
这类问题,一般有一下方面的原因:

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目录下!

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧