我在 C++ 中有一个函数
extern "C"
{
VARIANT __stdcall foo(const VARIANT FAR& p1, const VARIANT FAR& p2)
{
...
}
}
它编译为bar.dll
使用.def
指定入口点和序数的文件。(是的,很老式,我知道FAR
现在已经过时了)。
它的主要用途是在 Excel 中,我想将 dll 移植到 x64 以便我可以使用 64 位 Excel。在 VBA 中,我定义
Public Declare PtrSafe Function foo Lib "bar.dll" (Optional ByRef p1 As Variant, Optional ByRef p2 As Variant) As Variant
这(没有 PtrSafe)在 32 位下工作,是我目前拥有的。但是在 x64 中,当我使用 C++ 函数时p1
,p2
不要保存可读内存。
要么我遗漏了一些东西,要么不再支持。任何人都可以帮忙吗?