VB6应用程序中的非ActiveX DLL无法在Outlook 2010中加载

时间:2012-07-03 06:41:24

标签: dll com vb6 outlook

我有一个使用非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目录权限对所有人开放,但仍然没有骰子。

3 个答案:

答案 0 :(得分:1)

根据您提供的详细信息,看起来将DLL置于标准Add-in locations的路径中会有所帮助。

答案 1 :(得分:1)

我相信DLL搜索的第一个位置是EXE加载的目录,因此不会使用您的DLL的App.Path。

您确定尝试将此DLL安装到System32中吗?进入Windows?

除此之外,你应该为调用代码创建一个PATH(凌乱)或隔离清单(VB6,如果我跟着你),它指定DLL重定向到一个相对路径(即文件夹下的子文件夹)你的VB6代码)。

请参阅Dynamic-Link Library Search Order

答案 2 :(得分:0)

您可能想要检查DLL自身的依赖项。如果无法加载有问题的DLL或依赖链中的某些DLL 20级,您将得到相同的错误。