VB.net调用VC DLL(二)

参考文献5,讲了在C程序中直接调用DLL和lib的函数方法,不是通过编译器连接方式

也讲了在非C程序中直接调用DLL和lib的函数方法。

实操了一下,建了win32dll项目

新建.h文件和.cpp文件

.h文件中加:

void __stdcall funcA(double* dB, double* dL);

.cpp文件中加:

void __stdcall funcA(double* dB, double* dL)

{

}

新建.def文件

LIBRARY

EXPORTS

funcA @16

funcA后面有个空格,@后面是参数的字节数,8+8=16

编译生成了dll,放在system32下,

在VBA7下调用,

Private Declare PtrSafe Sub funcA Lib "libA.dll" (ByRef dB As Double, ByRef dL As Double)

调用函数,找不到dll,真是太奇怪了。

VBA给出的提示如下:

加载 DLL 时的错误(错误 48)
动态链接库 (DLL) 就是在 Declare 语句的 Lib 子句中所指定的库。此错误有以下的原因和解决方法:

此文件并非可执行的 DLL。
如果此文件是正文源文件,它必须编译并链接成可执行的 DLL 形式。

此文件并非 Microsoft Windows DLL。
取得此文件相应的 Microsoft Windows DLL 版。

此文件是早期的 Microsoft Windows DLL,而且和 Microsoft Windows 保护方式不兼容。
取得更新的版本。

此 DLL 引用到其他不存在的 DLL。
取得此被引用的 DLL 并让它能提供其他 DLL 使用。

此 DLL 或所引用的 DLL 并不在所指定的目录中。
移动 DLL 到所引用的目录或将 DLL 所在的目录添加到路径中。

详细信息,可选取有问题的项目,并按下 F1 (在Windows中)或HELP(在Macintosh中)键。

猜测可能是dll不是64位,重新生成64的dll,替换之前的32位 dll

函数成功调用

1、https://bbs.csdn.net/topics/390248432

2、vs开发遇到的问题之MSI未能注册模块 xxx.dll。HRESULT -2147024770。请与你的技术支持人员联系。_未能注册模块请与技术人员联系-CSDN博客

3、VBA如何调用动态链接库dll文件VBA如何调用动态链接库dll文件_微软技术-CSDN问答

4、模块已加载,但找不到入口点DLLRegisterServer[通俗易懂]-腾讯云开发者社区-腾讯云

5、https://www.cnblogs.com/dusty-cjh/p/8253526.html

相关推荐
wenha8 小时前
踩坑记录:UTF-8、UTF-8-BOM 与 GB2312 读取的乱码真相
utf-8·.net·编码·utf-8-bom
江沉晚呤时14 小时前
C# 整型溢出处理机制:checked 与 unchecked 上下文解析
c#·.net
余衫马15 小时前
在 Windows 服务中托管 ASP.NET Core Web API (.net6)
运维·windows·后端·asp.net·.net
步步为营DotNet17 小时前
LM-Kit.NET:.NET 生态一站式本地 AI 开发平台
人工智能·.net
步步为营DotNet17 小时前
.NET 实战 LlamaSharp:本地运行开源大模型
.net
CSharp精选营18 小时前
推荐一个开箱即用的.NET权限管理平台:Magic.NET
.net·开源项目·权限管理·企业级框架·后台脚手架
切糕师学AI2 天前
.NET CLR GC 调优完全指南:从理论到生产实战
.net·gc·clr
唐青枫2 天前
C#.NET TaskCompletionSource 深入解析:手动控制 Task、桥接回调事件与实战避坑
c#·.net
OctShop大型商城源码2 天前
C#.NET多商户商城系统源码_OctShop:技术与机遇的融合
c#·.net·多商户商城系统源码·商城系统源码
编码者卢布2 天前
【App Service】常规排查 App Service 启动 Application Insights 无数据的步骤 (.NET版本)
python·flask·.net