1

我正在尝试移植我在 Windows 中开发的 c++ dll,这些 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 结构。

4

2 回答 2

1

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

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

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

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

于 2015-02-21T12:06:20.663 回答
1

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

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

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

于 2016-03-11T12:25:29.077 回答