gpt4 book ai didi

c++ - VBA 64 位 Excel 不将指针传递给 DLL 函数 (C++)

转载 作者:可可西里 更新时间:2023-11-01 10:35:23 26 4
gpt4 key购买 nike

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

C++:

double test(long* v, long i) 
{
if (v == NULL)
return -88;
else
return *((long*)v);
}

VBA:

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)

它返回 -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

关于c++ - VBA 64 位 Excel 不将指针传递给 DLL 函数 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30488628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com