【发布时间】:2013-05-31 19:50:20
【问题描述】:
我在 Visual Studio 2012 中创建了一个执行计算的简单 dll。我使用以下语法从 Excel 2010 中的 VBA 调用此 dll:
Declare Sub MyFunction Lib "MyDll.dll" (ByRef param1 As Double, ByVal param2 As Double)
这个功能在我的开发机器上完美运行。当我尝试在另一台计算机上运行此 dll 时,我收到以下错误:
Run-time error '53': File not found: MyDll.dll
但是,当我以管理员(提升)模式运行 Excel(在另一台计算机上)时,我没有收到此错误,并且一切正常。
有没有什么方法可以在不让用户以管理员身份运行 Excel 的情况下使其工作?
【问题讨论】:
-
在非管理员模式下工作目录可能不同?确保 dll 在工作目录中
-
@GamErix 感谢您的 cmets。我得到了一些非常奇怪的行为。我尝试了很多东西,包括将 dll 放在 System32 目录中……但这就是现在发生的事情。如果我指定 dll 的 ABSOLUTE 路径,只要它是 NOT System32 目录,我就可以在正常模式下运行 dll(即不是管理员)。出于某种原因,如果我给它提供 System32 目录中 dll 的 ABSOLUTE 路径,我会收到文件未找到错误。我不得不承认这真的很奇怪。
-
true,这只是确认当您加载 dll 时,应用程序没有在您的 DLL 所在的目录中查找,或者换一种说法:您指定的 DLL 不在当前工作目录中或 DLL 库目录或 PATH 变量目录,所以 exel 找不到它。
-
@GamErix 请把你的 cmets 放在一个答案中,这样我就可以给你回答这个问题的功劳。再次感谢您的帮助!
标签: c++ dll visual-studio-2012 excel-2010