C++ VBA 64位Excel不向DLL函数传递指针(C+;+;)

C++ VBA 64位Excel不向DLL函数传递指针(C+;+;),c++,windows,excel,vba,dll,C++,Windows,Excel,Vba,Dll,我在Excel 64位上运行VBA程序,调用一些DLL函数(C++)。问题是(显然)它不能把指针传递给C++程序。该程序使用32位Excel。操作系统为Windows 8。对于Windows 7,32位和64位版本的Excel都运行良好 C++: VBA: 它返回-88 Dim x As LongPtr Dim z As Double z = test(x, CLng(1)) LongPtr在32位环境中计算为Long,在64位环境中计算为LongLong,因此定义x应该是可行的 另外,CLn

我在Excel 64位上运行VBA程序,调用一些DLL函数(C++)。问题是(显然)它不能把指针传递给C++程序。该程序使用32位Excel。操作系统为Windows 8。对于Windows 7,32位和64位版本的Excel都运行良好

C++:

VBA:

它返回
-88

Dim x As LongPtr
Dim z As Double
z = test(x, CLng(1))
LongPtr
在32位环境中计算为
Long
,在64位环境中计算为
LongLong
,因此定义x应该是可行的


另外,
CLng
将确保1被评估为
Long
类型。如果未添加此项,VBA将假定您的意思是
Integer

尝试
Dim x作为LongPtr
Private Declare PtrSafe Function hamid_test Lib "...\CVode.dll" (ByVal v As LongPtr, ByVal i As Long) As Double

 Dim x As LongLong
 Dim z As Double
 z = test(x, 1)
Dim x As LongPtr
Dim z As Double
z = test(x, CLng(1))