1

我在 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++ 函数时p1p2不要保存可读内存。

要么我遗漏了一些东西,要么不再支持。任何人都可以帮忙吗?

4

0 回答 0