Хорошие шаблоны для C/C++ основанная на плагине система?

Интересно, почему это происходит.

Компилятор оптимизирует весь ваш код. 300ps за операцию означает, что только noop был "выполнен".

12
задан Robert Gould 24 April 2009 в 11:32
поделиться

5 ответов

Я пошел дальше и начал преобразование. Я еще не закончил, но в случае, если кто-то еще рассматривает возможность обновления с 1.5 до 1.6, я отвечу на вопрос тем, что я видел до сих пор.

  • Если вы используете плагин cypal для затмения, он не поддерживает GWT 1.6 с этого времени. Удалите его, удалив плагин jar и перезапустите eclipse. Установите Google Eclipse Plugin в качестве замены (но посмотрите проблемы с ним ниже). Плагин не распознает ваш существующий проект как проект GWT. Самый простой способ - использовать плагин для создания нового проекта, а затем скопировать разделы buildSpec и natures из этого проекта в ваш реальный проект. Теперь плагин должен распознавать ваш проект.
  • В инструкциях по обновлению сказано, что нужно создать новый web.xml. Вместо, используйте тот, который у вас уже есть, и скопируйте его. Никаких изменений не требуется.
  • Добавьте SDK движка приложения Google и DSK GWT к пути сборки проекта
  • GWTCompiler изменен на Компилятор. Документы по обновлению не обсуждают изменения, которые вам нужно сделать здесь, но вам по крайней мере нужно заменить опцию -out на -war.
  • Для многих людей (все?) Компилятор не будет работать и выйдет из строя с ошибкой переполнения стека. Вы можете исправить это с помощью инструментов командной строки, но я не нашел способа исправить это с помощью плагина. Чтобы исправить это из командной строки, вам нужно добавить параметр стека, чтобы увеличить размер стека. Я строю с помощью ant, поэтому я добавил следующую строку в build.xml:

По мере того, как я узнаю больше, я обновлю это.

Обновление 5/3 / 2009:

Обновление завершено. Не уверен, что мне это нравится до 1,5. Eclipse не совсем гармонирует с новым макетом файла. То есть сейчас он не признает каталог war как корневой для веб-контента. Возможно, где-то есть настройка для этого.

Дополнительные примечания:

  • В вашем коде удалите ссылки на InetAddress (который использовался для создания GUID для регистрации в моем приложении). Это может быть связано с тем, что мой код GUID должен быть перемещен в другой пакет, не уверен.
  • Скопируйте appengine-web.xml из WEB-INF из временного проекта в war / WEB-INF
  • Плагин eclipse компилирует объекты hibernate с некоторым дерьмом, который добавляет столбец jdoDetachedState ко всем моим таблицам. Фууу!

В последнем пункте код не инструментируется сборкой муравья, поэтому эта ошибка не влияет на производственное развертывание. Это всего лишь код, сгенерированный Eclipse,

Есть хорошая статья о загрузке динамических библиотек, и примером тому служит инфраструктура плагинов.

EDIT OP добавил Windows как требование, поэтому этот подход не поможет, поскольку Windows не помогает POSIX-совместимый. Однако в WinAPI есть аналогичные функции - см. здесь .

9
ответ дан 2 December 2019 в 07:04
поделиться

Возможно, вы захотите попробовать Boost.Extension , но будьте осторожны: несмотря на название, это не одна из библиотек повышения.

Вот ссылка на документацию .

5
ответ дан 2 December 2019 в 07:04
поделиться

If you want cross-platform library loading without having to develop for each platform's API individually, libltdl may help.

Libtool provides a small library, called libltdl, that aims at hiding the various difficulties of dlopening libraries from programmers. It consists of a few headers and small C source files that can be distributed with applications that need dlopening functionality. On some platforms, whose dynamic linkers are too limited for a simple implementation of libltdl services, it requires GNU DLD, or it will only emulate dynamic linking with libtool's dlpreopening mechanism.

libltdl supports currently the following dynamic linking mechanisms:

  • dlopen (Solaris, Linux and various BSD flavors)
  • shl_load (HP-UX)
  • LoadLibrary (Win16 and Win32)
  • load_add_on (BeOS)
  • NSAddImage or NSLinkModule (Darwin and Mac OS X)
  • GNU DLD (emulates dynamic linking for static libraries)
  • libtool's dlpreopen (see see Dlpreopening)

Boost.Extension seems to only support Windows PE dlls, UNIX ELF shared objects, and Mac OS X Mach-O bundles. Well, that may be sufficient for you...

4
ответ дан 2 December 2019 в 07:04
поделиться

For C++ plugins you can check this article which detail how to achieve it with the previously mentionned posix calls.

Quoting the article :

Given that we can use these functions to access functions in a C library, how do we use them to access classes in a C++ library? There are several problems to overcome. One is that we must be able to locate the symbols we need in the library. This is trickier than it might seem because of the difference between the way symbols are stored in C and C++ files.

2
ответ дан 2 December 2019 в 07:04
поделиться

Boost.Extension кажется хорошим (никогда не использовал его, но скоро попробую). Другой альтернативой может быть класс POCO SharedLibrary .

2
ответ дан 2 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: