首页 > 解决方案 > 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

标签: vbadll

解决方案


推荐阅读