vs2005 C#程序发布 无法加载dll 找不到指定模块

傲慢的哈娃儿 2014-07-25 02:15:21
我在vs2005平台下利用C#编写了一个windows 应用程序。程序中DllImport 调用了一个dll文件(这dll文件是我买模块商家发给我的,便于二次开发)。程序的调试阶段没问题,所以打算进行软件发布。发布时,我将调用的这dll文件打包到了安装包里。发布的软件在本机进行安装,运行正常。但到其他电脑进行安装则提示 无法加载dll文件,找不到指定模块! 不知道什么问题,弄了整整两天了,网上收的方法能试的都是了,还是没解决!希望各位同胞指点指点啊!不甚感激!

在发布时,添加主输出时提示了这个:

不过我没管,直接继续了,好像没影响。

...全文
709 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
傲慢的哈娃儿 2016-03-31
  • 打赏
  • 举报
回复
引用 14 楼 jeffliu2 的回复:
我有个DLL文件也有问题,不能加载到进程中,请问能修改DLL吗?谢谢!
dll除非是你自己编的,否则应该修改不了吧。不好意思啊,我也不是很懂
傲慢的哈娃儿 2016-03-31
  • 打赏
  • 举报
回复
引用 13 楼 yimingzhenzhen 的回复:
恭喜楼主解决难题!!我在VS里运行一个下载的程序,提示找不到.dll文件,你知道怎么回事吗
不好意思,好久没上CSDN了。你在解决方案里的引用里添加以下这个dll或者在程序里DllImport 调用一下该dll试试哇。
jeffliu2 2015-11-06
  • 打赏
  • 举报
回复
我有个DLL文件也有问题,不能加载到进程中,请问能修改DLL吗?谢谢!
yimingzhenzhen 2015-05-09
  • 打赏
  • 举报
回复
恭喜楼主解决难题!!我在VS里运行一个下载的程序,提示找不到.dll文件,你知道怎么回事吗
by_封爱 版主 2014-07-25
  • 打赏
  • 举报
回复
把DLL扔到system32 下.. 别动不动就regsvr32......
tcmakebest 2014-07-25
  • 打赏
  • 举报
回复
.net 的程序默认同时兼容32和64位,但DLL不行,所以楼主在编译的时候选择x86吧
傲慢的哈娃儿 2014-07-25
  • 打赏
  • 举报
回复
引用 1 楼 yaotomo 的回复:
把这个dll放在系统的system32目录下,对其进行注册 方法为在运行窗口中输入 regsvr32 你的dll路径
这个试过了,注册不了,提示 已加载 Ginkgo_Driver.dll,但没有找到DIIRegisterServer 输入点无法注册这个文件
傲慢的哈娃儿 2014-07-25
  • 打赏
  • 举报
回复
引用 6 楼 allstudycsharp 的回复:
报错那么明显,路径都给了,舍不得去路径的地方看看,也舍不得去用户机子的路径看看。 以为微软的错误提示都是拿来给你忽略的?而不是仔细分析问题的?
Ginkgo_Driver.dll是买一个硬件模块商家给的动态库,方便二次开发
傲慢的哈娃儿 2014-07-25
  • 打赏
  • 举报
回复
引用 6 楼 allstudycsharp 的回复:
报错那么明显,路径都给了,舍不得去路径的地方看看,也舍不得去用户机子的路径看看。
以为微软的错误提示都是拿来给你忽略的?而不是仔细分析问题的?



这是我发布的程序在其他电脑上安装运行时的出错提示。提示无法加载的Ginkgo_Driver.dll是在程序中调用的动态库。这个错误是程序刚开始处catch到的一个错误,这是还没调任何关于office的东东。所以我没去查它提示的mso.dll 和excel.exe
梦吟情诗 2014-07-25
  • 打赏
  • 举报
回复
报错那么明显,路径都给了,舍不得去路径的地方看看,也舍不得去用户机子的路径看看。 以为微软的错误提示都是拿来给你忽略的?而不是仔细分析问题的?
於黾 2014-07-25
  • 打赏
  • 举报
回复
如果你确定不需要导入导出EXCEL,把DLL的引用去掉即可
於黾 2014-07-25
  • 打赏
  • 举报
回复
建议换NPOI导入导出 这样跟CPU无关,也跟OFFICE版本无关
於黾 2014-07-25
  • 打赏
  • 举报
回复
环境不一致导致的 目标机安装OFFICE了?版本一致? 目标机是64位,而你开发环境是32位? 提示OFFICE14找不到,跟厂家DLL没关系
路飞的小蝴蝶 2014-07-25
  • 打赏
  • 举报
回复
你看看dll是啥版本的。你当前有木有那个版本的.netFramWork
yaotomo 2014-07-25
  • 打赏
  • 举报
回复
把这个dll放在系统的system32目录下,对其进行注册 方法为在运行窗口中输入 regsvr32 你的dll路径
傲慢的哈娃儿 2014-07-25
  • 打赏
  • 举报
回复
谢谢各位了,问题已经解决了!

原因:我的程序是在vs2005下编的。软件发布后,我在本电脑vs2005安装目录下将vs2005运行库vcredist_x86.exe 搜索出来并在目标机上进行了安装。然后再在目标机上安装我发布的软件,于是软件运行时,窗体部分可以正常显示出来,而调用Ginkgo_Driver.dll库时则提示错误“找不到指定模块”。后来问了下商家,发现他的Ginkgo_Driver.dll库是在vs2010下编写的! 于是商家将他编写改dll库是所用的vs2010的运行库发给了我,我在目标机上将该运行库进行了安装,然后发布的软件就可以正常运行了!

补充一点:


像这种,程序中调用dll时报错,其实很可能程序已经没问题了,只是与该dll文件对应的硬件驱动可能没有安装完成。我之前在目标机上将商家给的驱动程序(exe文件)安装了一遍,但依然提示上面那问题,找不到指定模块。后来我把与这驱动对应的硬件插到电脑上,电脑好像有个自动检测驱动的过程。等电脑提示硬件可用了后,再运行发布的程序就完全ok了!

110,538

社区成员

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

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

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