从Access VBA加载自定义DLL

时间:2017-07-14 19:10:04

标签: c++ vba visual-studio ms-access dllimport

我正在将数据从Microsoft Access数据库迁移到SQL Server 2008中的数据库中。数据包含从未正确处理过的非实质性错误数量。作为清理数据的一部分,我试图导入我使用Visual Studio 2017编写的DLL来执行VBA不擅长的一些任务。不幸的是,当我尝试使用它时,它会给我一个错误,说"无法在C:\ Projects \ VSR \ Library \ float.dll"中找到DLL入口点DoubleIsSpecialValue; (运行时错误' 453')。

我在Visual Studio 2017中使用Visual C ++创建了DLL作为Win32库,虽然它使用的功能也可以用C编译。我没有修改默认的" dllmain.cpp& #34;它生成的文件,其中包含DllMain()条目函数。有问题的函数在" stdafx.h"如

#define FLOATLIBRARY_API __declspec(dllexport)

FLOATLIBRARY_API bool DoubleIsSpecialValue(double value);

并在" float.cpp"中实现如

FLOATLIBRARY_API bool DoubleIsSpecialValue(double value) {
    return isnan(value) || isinf(value) || ((value == 0.0) && (copysign(1.0, value) == -1.00));
}

据我所知,所有这些似乎都是正确的标准用法。

我将该功能导入VBA

Public Declare Function DoubleIsSpecialValue _
       Lib "C:\Projects\VSR\Library\float.dll" _
       (ByVal value As Double) As Boolean

我在尝试使其工作时尝试了许多不同的变体:将文件移动到其他位置,使用regsrvr32.exe(表示无法加载模块)进行注册,然后添加同名的import命令的别名(当我移动到另一行时,编辑器会自动删除它),但都没有成功。

关于问题所在的任何想法?这是我想要使用的众多功能中的第一个,因此非常感谢任何帮助。

0 个答案:

没有答案