Mac OSX 的 c++ 中的变体类型结构 (oaidl.h)?

Variant Type Structure (oaidl.h) in c++ for Mac OSX?

我正在尝试移植我在 windows 中开发的 c++ dll,它广泛使用了 Variant (ole/com) 类型结构(请参阅 https://msdn.microsoft.com/en-us/library/windows/desktop/ms221627%28v=vs.85%29.aspx)。此类型在 visual studio 的 oaidl.h 文件中定义,并在 windows 中使用 "windows.h" 导入。

在 xcode 的 c++ 中是否有任何现有的方法来使用此类型?显然包含 windows.h 没有任何意义,也不起作用。你知道在 OSX 上使用这种类型的图书馆吗?请注意,变体使用了我在 mac 上也找不到的 safearray 结构。

有一个简短的回答:没有。 VARIANT 包括许多仅在 Windows 环境中才有意义的类型和接口(例如 IUnkown)。我自己从 Windows 开发改为 POSIX C++ OSX 和 Linux。因为我也将代码从 windows 转移到标准的 unix 世界。

恕我直言,影响最小的方法是用自己的类型替换 VARIANT,例如MYVARIANT 并且只移动你真正需要的联合部分。这使您可以自由地制作一个在 Microsoft 和世界其他地方之间切换的 typedef。

但我个人认为您应该尝试摆脱它。至少尝试将其封装在 class 中。 COM(这是一个让开发人员陷入困境的好主意的最好例子)及其 VARIANT 系统是我在任何其他系统上所缺少的最后一件事。

更新 当我更深入地搜索时,我发现 boost 在这里有一个变体系统: http://www.boost.org/doc/libs/1_36_0/doc/html/variant.html

你可以在这里看到我尝试做的事情:

BSTR's and VARIANT's under... mac os x

我在其中描述了我现在如何尝试将 VARIANT 移植到 mac os x,如果它有帮助的话。