VB调用DLL出现无法找到DLL的问题 我用fortran做了个DLL,用VB调用,可是编译成EXE文件后,在某些机子上可以正常运行,而在某些电脑上却提示找不到DLL文件,是怎么回事?我的DLL和EXE文件放在同一目录下的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Private Declare Sub add Lib "cal1.dll" (aa1 As Single, aa2 As Single, aa3 As Single, aa4 As Single)我是这样定义的。 有个经验也许能帮到你:DLL载入失败时,VB6也会报"找不到文件"......因此,你可以在有问题的机器上使用loadlibrary来载入一下DLL并使用getproaddress取add函数的地址,看看能否成功.如果失败了,检查一下DLL所需要的依存环境是否正常.比如你引用了别的对象,或者载入了别的组件.关键是你这个DLL的DllMain里面返回失败的条件是什么.注意一下那个条件. 我的DLL是我用fortran编写的一个函数,就是些计算代码,没有任何引用对象和载入任何组件,依存环境是否就应该没问题了?? 在有问题的机器上使用loadlibrary来载入一下DLL并使用getproaddress取add函数的地址,看看能否成功 检查一下DLL所需要的依存环境是否正常----把dll拖到Dependency Walker里面~ loadlibrary函数还要装VB来使用,呜呜。 不用啊......你编译一个EXE,里面就声明个loadlibrary就行了然后用它加载你的DLL,把返回值检查一下即可知道问题的范围.为了方便API调试,你可以使用FormatMessage函数来对系统API返回值进行格式化:http://www.m5home.com/bbs/dispbbs.asp?boardid=28&Id=2509使用示例: MsgBox GetRetMessage(53,FORMAT_MESSAGE_FROM_SYSTEM) 显示: 找不到网络路径。 MsgBox GetRetMessage(0,FORMAT_MESSAGE_FROM_SYSTEM) 显示: 操作成功完成。虽然简单,但对于API调试比较方便. regsvr32.dll里面有个libraryload函数,我调用了一下我自己写的那个DLL,说找不到指定模块。我怀疑是不是我的VB程序打包的问题。 那看来你这个DLL初始化失败了你自己用LoadLibrary加载一下,用我上面给的函数检查一下返回值,看看具体原因是什么. 搞定了,呵呵。是fortran编译器的问题,谢谢大家的热心帮助,谢谢啦!! Private Declare Sub add Lib "把你的路径写全一点比如 c:\programe files \ call\cal1.dll" (aa1 As Single, aa2 As Single, aa3 As Single, aa4 As Single) 各位大侠,我也碰到了关于VB调用DLL文件问题,已发新帖。大家帮忙呀。 用什么代码使Excel用指定的格式保存数据? 制图,象素问题 数据库中读取图片并显示问题? 请问在vb中怎样向存储过程传递一个为nothing或null的参数。 急救!!! 出现的错误请高手解决。。。。。 急!!XML方面的专家请进,有个奇怪的问题... 关于InstallShield,这个程序应该就是用来打包的吧? .rm格式的文件用什么播放器播放? 请问哪错了? 急问高手:如何使用别人的DLL? VC转vb!! adodc
我是这样定义的。
依存环境是否就应该没问题了??
虽然简单,但对于API调试比较方便.
我怀疑是不是我的VB程序打包的问题。