vb6打包后运行提示找不到dll文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb6打包后运行提示找不到dll文件相关的知识,希望对你有一定的参考价值。

最近写了一个vb程序,在打包后遇到很多问题,经过多方咨询终于解决了大部分,现在打包后的安装文件在没装vb的电脑上可以安装了,但是却提示找不到dll文件,这个文件是我自己编写的dll,在vb中调试调用都通过。打包时我将这个dll文件拷贝到windows/system32下或是程序安装目录下(app.path),在没有vb的电脑上运行时都说找不到,请问该怎样解决?(注:程序中调用dll时我写的是:Public Declare Function OpenDriver Lib "abc.dll" (),abc.dll在我的vbp目录下)
抱歉,补充一点,我的dll是使用的第三方公司提供的vc编写的dll文件,我无权对他进行修改。另外,除了vb自带的打包器,我也使用过setup factory7和wise installation都是相同的错误找不到该dll,而安装了vb就没问题了,是不是我的代码问题?还是vb的问题?我在网上也看到过类似的问题,但没有找到解决方案

参考技术A 你是怎么打包的呢? 建议你用个软件 setup factory 7.0什么环境都是自动帮你找齐的,下一步下一步就好了,超级好用。我用vb一直都是用这个,还没有出现过搞不定的呢
-----------------------
你vb里面引用进去了么把那个dll?? 要是你的vb里面没有成功的封装进去了的话就出现这个问题了
工程--部件--浏览--然后找到那个 dll 添加进去看看能不能编译过去就行了,保存了你再打包,一切ok
参考技术B 可按下面的步骤做一个简单的示例:

一、创建DLL文件

新建一个ActiveX Dll文件,写入以下代码:
--------------------
Public Function dlltest() '注意:此处一定要加Public, 否则无法调用
dlltest = "Dll Test OK!"
End Function
--------------------
生成DLL文件,取名 dlltest.dll,放在d:\下。

二、注册DLL文件

在运行里输入:

regsvr32 d:\dlltest.dll

三、在ASP在调用

新建ASP文件,test.asp,放在IIS根目录下,写入以下代码:
--------------------
<%
set dt = createobject("工程1.class1")
response.write dt.dlltest()
%>
--------------------

四、浏览ASP文件并验证

访问此地址:http://localhost/test.asp
将显示:
-------------
Dll Test OK!
-------------
说明调用成功。

最后再用 regsvr32 -u d:\dlltest.dll 卸载dlltest.dll的注册。

VB调用Fortran编译的dll,打包后在其他电脑上安装,运行后提示找不到所编译的dll文件

VB调用Fortran编译的DLL文件,编译器为Inter visual Fortran,是32位dll,机器64位。
在自己电脑上直接运行或生成exe运行均没有问题,调用成功,结果正确。
用VB的自带工具Package&Deployment,将VB程序打成安装包,且包内含有VB程序运行所需要的Dll,并且加入了Fortran编译的dll,名为VSIE_VB.dll。
打包后在其他电脑上安装,安装后运行exe,但是却出现错误提示:找不到VSIE_VB.dll文件。在安装了VB和没有安装VB的电脑上均试验过,找不到Dll文件。
上网查询后发现可能还是缺少其他的Dll文件,但是不知道到底缺的是什么。
还是什么其他的原因?

这个问题困扰了我很久,马上就要答辩了!请各位大神帮忙~~万分感谢~~~感激不尽~~
补充一下 我用depends查看了dll文件 把它调用的其他dll文件都复制到了根目录下(是Inter visual fortran中的dll) 再次打包运行 依然显示无法找到VSIE_VB.dll 抓狂中!!!!

参考技术A 最简单的方法
把你 VSIE_VB.dll 放到你生成的exe目录
新建文件
写上
regsvr32.exe VSIE_VB.dll /s
另存为 注册.bat
bat也放在exe目录双击一次追问

请问新建文件是新建什么文件?在哪里新建?
是在其他的电脑上这么做吗?
这样的话VSIE_VB.dll所依赖的其他dll还需要复制过去吗?
万分感谢!

追答

新建一个.txt文件后缀改成.bat
regsvr32.exe XX.dll /s
regsvr32.exe XX1.dll /s
regsvr32.exe XX2.dll /s
XX改成你的dll名
有多少个dll就复制多少条改成dll名就行了
提示少哪个就复制哪个放到你生成的exe根目录
bat也放一起
在别的电脑上第一次先运行bat注册
以后就不用了

追问

谢谢你,但是注册时失败了,提示“模块加载失败,确保该二进制储存在指定的路径中,或调试它以检验该二进制或相关的DLL是否有问题”
将注册文件中的改为全路径和不加路径都试过。
另外我想问一下如果这个DLL用到的是在system32文件夹中的dll,那这些system32文件夹中的dll还需要复制并注册吗?

谢谢你啦

追答

用到的电脑system32里有这个dll就不用
或者你手动把用到的dll粘贴到system32目录吧..

以上是关于vb6打包后运行提示找不到dll文件的主要内容,如果未能解决你的问题,请参考以下文章

用vc对 dll 打包 怎么做??运行的时候 提示找不到 xx.dll 文件

java使用jna加载dll文件可以运行成功,打包后运行jar文件却找不到dll文件

Python pyinstaller没有自动将依赖库打包进去,运行时提示找不到模块ModuleNotFoundError: No module named ‘PyQt5‘

Python pyinstaller没有自动将依赖库打包进去,运行时提示找不到模块ModuleNotFoundError: No module named ‘PyQt5‘

关于winform打包后,显示 CefSharp.core.dll 找不到指定的模块的解决方案。

Python 使用pyinstaller打包程序失败提示找不到c盘的某个dll文件解决方法,FileNotFoundError: [WinError 2] 系统找不到指定的文件