尽管硬编码位置,VBA找不到我的DLL.

Jam*_*mes 2 c++ dll winapi vba

我正在使用C++创建一个可以从VBA代码中使用的简单DLL.但是,虽然它可以在我的开发计算机上工作,但在尝试访问不同计算机上的DLL时,VBA会声明找不到DLL文件,尽管该路径有硬编码.

我的DLL看起来像这样(使用Visual C++ 2010 Express作为Win32 DLL项目创建):

DEF文件:

LIBRARY "squareNumber"
EXPORTS
squareNumber
Run Code Online (Sandbox Code Playgroud)

Function.cpp:

double __stdcall squareNumber(double & x)
{
    return x*x;
}
Run Code Online (Sandbox Code Playgroud)

VBA代码如下所示:

Public Declare Function squareNumber Lib "C:\MySimpleDLL.dll" (ByRef number As Double) As Double

Sub test()
    MsgBox squareNumber(2)
End Sub
Run Code Online (Sandbox Code Playgroud)

我是C++ DLL的新手,我编写的DLL是错误的,还是VBA的问题?

使用RegSvr32还会产生"模块[dllpath]无法加载.确保二进制文件存储在指定的路径或调试它以检查二进制文件或从属.DLL文件的问题."

Rem*_*eau 6

听起来你的DLL依赖于开发机器上存在的其他DLL而不是目标机器上的DLL.当操作系统加载你的DLL但却找不到依赖的DLL时,它会报告相同的"找不到文件"错误,让你认为它确实无法找到你的DLL.如果是这种情况,那么您需要分发这些额外的DLL或删除它们的依赖项.