我正在尝试移植我在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结构。
答案 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)