vba - VBA(32 位)调用 x86(32 位)DLL (C++) 继续失败并显示“类型不匹配”
问题描述
我一直收到 VBA <-> DLL 之间的“类型不匹配”错误
DLL 代码是用 VS C++ 编码的
#include "pch.h"
#include <Windows.h>
#include <iostream>
_declspec(dllexport) double _stdcall ArraySum(double *arr) {
std::cout << " Called me" << arr[0] << std::endl;
return 1.1;}
和要调用的 VBA 代码
Private Declare Function testDLL _
Lib "...\Release\VBATest.dll" Alias "ArraySum"(ByRef Arr As Double) As Double
Sub Main
MyTest
End Sub
Sub MyTest
Dim MyX() As Double
Dim mySize As Integer
mySize = 10
ReDim MyX(mySize)
For i = 0 To mySize
MyX(i) =(i+1)
Debug.Print "Index = " & i & " arr = " & MyX(i)
Next
Dim MyResult As Double
MyResult = testDLL(MyX(0))
End Sub
dll可以找到,用kernel32测试过
此过程的调试很困难,因为 VBA 是由第三方提供的,而不是 Excel
任何人都可以看看我是否犯了任何愚蠢的错误?
BR