Структура типа варианта (oaidl.h) в C++ для Mac OSX?

Я пытаюсь портировать мою C++ dll, разработанную в окнах, которые широко используют структуру типа Variant (ole/com) (см. https://msdn.microsoft.com/en-us/library/windows/desktop/ms221627%28v=vs.85%29.aspx). Этот тип определен в файле oaidl.h Visual Studio и импортируется в Windows с "windows.h".

Есть ли какой-либо способ использовать этот тип в C++ в XCode? Обвиоули включать windows.h бессмысленно и не работает. Знаете ли вы библиотеку для использования этого типа на OSX? Обратите внимание, что вариант использует структуру safearray, которую я не нахожу на Mac.

2 ответа

Решение

Короткий ответ: нет. VARIANT включает в себя множество типов и интерфейсов, которые имеют смысл только в среде Windows (например, IUnkown). Я сам перешел с Windows Development на POSIX C++ OSX и Linux. Как я также перенести код из Windows в стандартный мир Unix.

Путь с наименьшим воздействием ИМХО - заменить VARIANT собственным типом, например, MYVARIANT, и перемещать только ту часть союза, которая вам действительно нужна. Это дает вам свободу создавать typedef, который переключается между Microsoft и остальным миром.

Но, по моему личному мнению, вы должны попытаться избавиться от этого. Попробуйте, по крайней мере, включить его в класс. COM (который является лучшим примером хорошей идеи для разработчиков) и его система VARIANT - последнее, чего мне не хватает в любой другой системе.

ОБНОВЛЕНИЕ Когда я искал немного глубже, я обнаружил, что у Boost есть вариант системы здесь: http://www.boost.org/doc/libs/1_36_0/doc/html/variant.html

Вы можете увидеть, что я пытался сделать здесь:

BSTR и VARIANT под... Mac OS X

где я описал, как я сейчас пытаюсь портировать VARIANTв Mac OS X, если это может помочь.

Другие вопросы по тегам