Здравствуйте, люди
Я пишу библиотеку (очень желательно DLL), которая должна:
1) Быть использована из раных компиляторов.
2) Содержать кроме функций так же классы.
Пункты 1 и 2, как я понял — взаимоисключающие, если речь идёт о DLL, так?
Или между разными реализациями хотя бы только C++ всё-таки есть способ использовать классы?
Пока что у меня такие мысли (имхи, так сказать):
1) Написать DLL только с функциями, все классы сделать как статичные LIB.
2) Создать кросс-компиляторный код и создать версии lib_msvc.dll, lib_borland.dll, итд...
3) Оформить все классы через что-то вроде COM или его упрощённого самописного аналога.
4) То же что и 2, но вообще сделать отдельные проекты под разные среды.
Первый вариант плох тем, что я изначально хотел получить всё-же DLL, который можно обновлять не перекомпилируя всё.
Второй плох тем, что надо как-то написать код, что б он компилился много где, и ещё возникает куча DLL.
Третий плох тем, что COM — тяжелая и сложная штуковина, а своё микро-подобие может напороться на грабли, о которых я не подозреваю.
Четвёртый то же что и второй, но ещё и сложность изменения кода, и кучи проектов, путаница.
Какой способ лучше и почему? Или может есть ещё более лучший способ?
PS: Просьба в гугль не посылать (разве что с указанием текста запроса), отказаться от задачи не предлагать
Itsumo sobani, itsumo hitori.
Re: Делаю библиотеку для использования разными компиляторами
Здравствуйте, Sakura-chan, Вы писали:
SC>Здравствуйте, люди SC>Я пишу библиотеку (очень желательно DLL), которая должна: SC>1) Быть использована из раных компиляторов. SC>2) Содержать кроме функций так же классы.
Классы можно вынести в хедер файле поставляемом вместе с библиотекой. Обернуть в них вызов вызов API твоей DLL. У Вилсона есть глава посвященная этой технике.
Re: Делаю библиотеку для использования разными компиляторами
Здравствуйте, Sakura-chan, Вы писали:
SC>Третий плох тем, что COM — тяжелая и сложная штуковина, а своё микро-подобие может напороться на грабли, о которых я не подозреваю.
COM на уровне "dll с классами" не тяжелый и не сложный. Другой вопрос, если хочется например возможности использования скажем из Jscript или Ruby. Тогда интерфейсы придется писать под Automation, а это тот еще геморрой.
--
Sergey Chadov
... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[2]: Делаю библиотеку для использования разными компилятор
Здравствуйте, Sergey Chadov, Вы писали:
SC>Здравствуйте, Sakura-chan, Вы писали:
SC>>Третий плох тем, что COM — тяжелая и сложная штуковина, а своё микро-подобие может напороться на грабли, о которых я не подозреваю. SC>COM на уровне "dll с классами" не тяжелый и не сложный.
В смысле написания своей альтернативы или в сымсле использования стандартного?
SC> Другой вопрос, если хочется например возможности использования скажем из Jscript или Ruby. Тогда интерфейсы придется писать под Automation, а это тот еще геморрой.
Ну, мне, по счастью, достаточно разновидностей C++ (Borland5, Builder, Dev, MSVC), максимум — дельфи или асм, не более.
Itsumo sobani, itsumo hitori.
Re[2]: Делаю библиотеку для использования разными компилятор
Здравствуйте, MindWrapper, Вы писали:
MW>Здравствуйте, Sakura-chan, Вы писали:
SC>>Здравствуйте, люди SC>>Я пишу библиотеку (очень желательно DLL), которая должна: SC>>1) Быть использована из раных компиляторов. SC>>2) Содержать кроме функций так же классы.
MW>Классы можно вынести в хедер файле поставляемом вместе с библиотекой. Обернуть в них вызов вызов API твоей DLL. У Вилсона есть глава посвященная этой технике.
Хм, интересная мысль. Мне как-то в голову такое не приходило
А кто такой Вилсон?
"Уилсон М. — C++:практический подход к решению проблем программирования" -- это оно?
Itsumo sobani, itsumo hitori.
Re[3]: Делаю библиотеку для использования разными компилятор
Здравствуйте, Sakura-chan, Вы писали:
SC>Хм, интересная мысль. Мне как-то в голову такое не приходило
На практике видел такой подход в HTMLayout (http://www.terrainformatica.com/htmlayout/)
Работает
Если будет интересно, см. файл HTMLayoutSDK\include\htmlayout_dom.hpp да и прочие *.hpp файлики.
Хорошо там, где мы есть! :)
Re[4]: Делаю библиотеку для использования разными компилятор
Здравствуйте, ShaggyOwl, Вы писали:
SO>На практике видел такой подход в HTMLayout (http://www.terrainformatica.com/htmlayout/) SO>Работает SO>Если будет интересно, см. файл HTMLayoutSDK\include\htmlayout_dom.hpp да и прочие *.hpp файлики.
Точно, поглядел. В общем, всё, идею я понял, дальше сам. Спасибо!
Itsumo sobani, itsumo hitori.
Re[3]: Делаю библиотеку для использования разными компилятор
SC>В смысле написания своей альтернативы или в сымсле использования стандартного?
Стандартного. Заготовка создается VC-шным визардом, нужно только методы прописать.