我正在尝试移植在Windows中开发的c ++ dll,该DLL广泛使用了Variant(ole / com)类型的结构(请参阅https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms221627%28v = vs.85%29.aspx)。此类型在Visual Studio的oaidl.h文件中定义,并通过“ windows.h”导入Windows。
在xcode中的c ++中,是否有任何现有方法可以使用此类型?包含windows.h的建议是毫无意义的,并且不起作用。您知道在OSX上使用此类型的库吗?请注意,变体使用了我在Mac上都找不到的safearray结构。
答案很简单:没有。VARIANT包含许多类型和接口,这些类型和接口仅在Windows环境中才有意义(例如IUnkown)。我本人从Windows开发更改为POSIX C ++ OSX和Linux。因为我还将代码从Windows传输到标准的Unix世界。
恕我直言,影响最小的方法是用自己的类型(例如,MYVARIANT)替换VARIANT,并只移动您真正需要的并集部分。这使您可以自由地在Microsoft和世界其他地方进行typedef切换。
但是我个人认为您应该尝试摆脱它。尝试至少将其封装在一个类中。COM(这对开发人员来说是个好主意的最好例子),其VARIANT系统是我在其他任何系统上都缺少的最后一件事。
更新当我进行更深入的搜索时,我发现boost在这里具有变体系统:http : //www.boost.org/doc/libs/1_36_0/doc/html/variant.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句