我在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
没有可读的内存。
要么我遗失了某些东西,要么就不再支持了。有人可以帮忙吗?