我有一个使用非activeX DLL(非注册)的VB6应用程序。
它是通过经典Public Declare Function "Function Name" Lib "Library.DLL"
语法声明的。
在我的开发机器(XP)上它工作正常但是当我部署到Vista或Win7时,我经常遇到运行时错误48 - 找不到有关DLL的文件。
我尝试将该DLL复制到我能想到的每个目录,包括测试计算机上的每个环境路径和应用程序路径。
这些都是32位测试环境,因此它不是SysWow64问题。
可能会将扳手放入混音中,因为该应用程序是Outlook COM Addin。
我设法在Win7上安装VB6,并且能够运行一个利用这个DLL的小样本应用程序(在Outlook进程之外)所以我知道它的工作原理提供了DLL位于App路径中。如果我在测试环境中运行它时从我的DLL中调用App.Path
,那么毫不奇怪,我的安装目录会显示DLL。
我试过关闭UAC。我试图让App.Path
目录权限对所有人开放,但仍然没有骰子。
答案 0 :(得分:1)
根据您提供的详细信息,看起来将DLL置于标准Add-in locations的路径中会有所帮助。
答案 1 :(得分:1)
我相信DLL搜索的第一个位置是EXE加载的目录,因此不会使用您的DLL的App.Path。
您确定尝试将此DLL安装到System32中吗?进入Windows?
除此之外,你应该为调用代码创建一个PATH(凌乱)或隔离清单(VB6,如果我跟着你),它指定DLL重定向到一个相对路径(即文件夹下的子文件夹)你的VB6代码)。
答案 2 :(得分:0)
您可能想要检查DLL自身的依赖项。如果无法加载有问题的DLL或依赖链中的某些DLL 20级,您将得到相同的错误。