VBA找不到我的DLL,尽管硬编码的位置
VBA cannot find my DLL, despite hardcoding location.
我正在使用c++创建一个简单的DLL,我可以从VBA代码中使用。然而,当它在我的开发计算机上工作时,当试图访问不同计算机上的DLL时,VBA声明DLL文件未找到,尽管硬编码路径。
我的DLL看起来像这样(用Visual c++ 2010 Express创建的Win32 DLL项目):
DEF文件:
LIBRARY "squareNumber"
EXPORTS
squareNumber
Function.cpp:
double __stdcall squareNumber(double & x)
{
return x*x;
}
VBA代码看起来像这样:
Public Declare Function squareNumber Lib "C:MySimpleDLL.dll" (ByRef number As Double) As Double
Sub test()
MsgBox squareNumber(2)
End Sub
我是非常新的c++ dll,我的代码dll错误,还是它是VBA的问题?
使用RegSvr32也会产生"The module [dllpath] failed to load. "确保二进制文件存储在指定的路径中,或者对其进行调试以检查二进制文件或依赖的. dll文件是否存在问题。"
听起来您的DLL依赖于存在于您的开发机器上但不存在于目标机器上的其他DLL。当操作系统加载你的DLL,但无法找到相关的DLL,它报告相同的"无法找到文件"错误,让你认为它找不到你的DLL,当它真的找到了。如果是这种情况,那么您需要分发这些额外的dll,或者删除对它们的依赖。
为了获得有关您的dll所需的其他依赖项的信息,您可以尝试Dependency Walker免费软件。
我花了好几天的时间来追踪和解决这个问题。
在我的情况下,问题是我的DLL与多线程运行时库DLL动态链接。
修复是在VS中加载我的项目,编辑项目的属性,并在"配置属性>C/c++>代码生成"下将"运行时库"从"多线程DLL (/MD)"更改为"多线程(/MT)"。
至少对我来说问题解决了。
相关文章:
- 如何确定我已使用非编码文件到达 EOF?
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 在卡萨布兰卡形成编码参数的列表
- 如何定义更改car类中car位置的方法
- 使用迭代器时如何访问对象在向量中的位置?
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 求最大元素位置的分治算法
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- QT 无法识别 UTF-8 编码,适用于其他所有位置
- 使用 Arduino 将位置编码器值转换为 RPM 时出现问题
- 我们可以在不使用 c 程序和一些编码技术的情况下访问 c 中变量的内存位置以及它在程序中的值吗?
- VBA找不到我的DLL,尽管硬编码的位置