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

时间:2015-02-21 10:58:50

标签: c++ xcode macos variant safearray

我正在尝试移植我在windows中开发的c ++ dll,它大量使用了Variant(ole / com)类型的Structure(参见https://msdn.microsoft.com/en-us/library/windows/desktop/ms221627%28v=vs.85%29.aspx)。此类型在visual studio的oaidl.h文件中定义,并在带有“windows.h”的窗口中导入。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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

我描述了我现在正试图将VARIANT移植到mac os x,如果它可以帮助的话。