![]() |
Система плагинов для программы на с++
Для программы нужно создать систему плагинов. Плагины должны представлять из себя обычный текст. При запуске программы нужно скомпилировать все плагины в нативный код. Сама программа написана на с++. Смотрел в сторону LUA, и в часности на LuaJIT, но там нету быстрой и легкой интеграции в с++ код(хотя вызвать чисто сишные методы легко). Собственно нужна легкая интеграция с с++, ООП, и главное-компиляция(в приложении очень важна скорость, и количество потребляемой памяти). Также было бы круто иметь синтаксис как в Java или С#. Как для моих целей может подойти Google V8(там все идеально, только не уверен за скорость)?
Посоветуйте что нибуть нормальное и быстрое. |
Плагины в виде библиотек рассматривались? (компиляция в нативный код компилятором)
|
Цитата:
|
зачем собирать компилятор? чем mingw не компилятор то? Перед запуском выполняешь g++ -shared plugin.cpp -o plugin.dll (или как-то так) и вперёд... Быстрее скомпилированного гецецой кода ничего не будет работать.
Как вариант - собирать объектники и линковать результирующий код. В общем получится что-то генту-подобное. Конечно, вместе с исходниками или объектниками нужно тогда поставлять mingw. |
Ну, в с++ я не мастер, так что вопрос, при g++ -shared plugin.cpp -o plugin.dll будет прилинкована стандартная библиотека с++ к dll?
|
g++ аналогичен по действию gcc -lstdc++ и ещё реакцией на расширения файлов.
Можно почитать здесь http://parter.kaist.ac.kr/man/g++.html (найдено гуглением man g++) Цитата:
|
Вариант с mingw может прокатить только если остальное приложение будет на основе mingw, а то физическое представление объекта компилятора mingw может отличатся от такового у msvc. Еще беда в том, что либу от mingw к msvc будет проблемно прикрутить. То есть, надо будет извращаться, делать либо сишный интерфейс, либо долго и муторно искать способ подружить два компилятора.
если бы не библиотека с закрытым кодом в приложении, без которой никак, и которая собрана под msvc, я б не парился и все на mingw сделал бы :( |
варианты:
1) msvc-шную часть скомпилировать при помощи gcc (и она станет gcc-шной) 2) msvc-шную часть скомпилировать в dll и подключать эту dll при сборке в gcc 3) в msvc-шной части сделать обзор dll-ок из папки /plugin и вызывать у каждой найденной какую-нить функцию (так делает большинство серьёзных программ), а dll-ки подкладывать в папку после сборки при помощи gcc Цитата:
Цитата:
Хотя у меня был случай, когда надо было сделать плагин, у которого в аргументах интерфейсных функций была паскалевская строка. Сделать его на c++ я не осилил, пришлось использовать delphi |
Время: 19:22. |
Время: 19:22.
© OSzone.net 2001-