我正在使用Windows10(64位)和Excel 2016 (32位),并希望在VBA中实现Yocto-4-20mA-Tx模块(https://www.yoctopuce.com/EN/products/usb-actuators/yocto-4-20ma-tx)的控制。
根据文档,DLL是用C写成的,下面是三个基本功能。
int yapiInitAPI(int connection_type, char *errmsg);
int yapiUpdateDeviceList(int forceupdate, char *errmsg);
int yapiHTTPRequest(char *device, char *request, char *buffer, int buffsize, int *fullsize, char *errmsg);我读过(但可能还没有完全理解)以下内容:
我尝试在VBA模块中实现第一个函数(yapiInitAPI)。将DLL定位在应用程序文件夹中。
Option Explicit
Private Declare Function yapiInitAPI Lib "yapi" (ByVal connection_type As Long, ByVal errmsg As String) As Long
Sub myInit()
Dim nReturn As Long
Dim sError As String
nReturn = yapiInitAPI(1, sError)
MsgBox sError
MsgBox nReturn
End Sub运行此操作将导致
“运行时错误'49':错误的DLL调用约定”
在yapiInitAPI(1,sError)行上。
以下是一些问题:
发布于 2018-04-02 05:03:18
文档还提到“来自yapi.dll的每个入口点都是重复的,您会发现一个普通的C-decl版本和一个Visual 6兼容版本,前缀是vb6_”:-)。
对于调用方应用程序和DLL,必须使用相同的32/64位结构。
https://stackoverflow.com/questions/49486799
复制相似问题