написать плагин C, используя некоторый язык сценариев - PullRequest
1 голос
/ 24 ноября 2010

У меня есть API, который загружает пользовательский C DLL в качестве плагина.

Я хочу создать прокси-библиотеку, которая будет:

  • Перевод звонков из ядра приложения к некоторому сценарию.
  • Перенос обратных вызовов из этого скрипта вернуться к ядру приложения.

API довольно сложный, поэтому будет много работы, чтобы обернуть все вручную - есть что-нибудь, что автоматизирует это? (Любой язык сценариев должен работать, например, lua, tcl, perl).

В принципе мне нужно что-то вроде толуа, но это позволит просто вызывать обратные вызовы. Более интересно генерировать lua-заглушки, которые будут автоматически вызываться из основного приложения (через прокси-плагин?). (И эти заглушки должны генерироваться на основе плагина C API).

Кто-нибудь знает, какой инструмент можно использовать для этого?

1 Ответ

1 голос
/ 10 февраля 2011

Стандартный способ сделать это - написать свои функции взаимодействия на каком-либо языке определения интерфейса и написать синтаксический анализатор для этого языка, чтобы выплевывать C / lua / etc. код, который вы хотите (например, http://msdn.microsoft.com/en-us/library/aa367091%28v=vs.85%29.aspx). Вы слышали о Swig? (http://www.swig.org/),, что может помочь.

Внутренний метод, который мы используем, состоит в том, чтобы пропустить шаг IDL и пометить наш C-код напрямую тем, что мы хотим экспортировать. например AUTO_PARSE JSON_RPC; void foo (char * name, int age) { // ... }

на этапе предварительной обработки мы сканируем исходные файлы на наличие тегов AUTO_PARSE и выкладываем специальные файлы .c, которые мы компилируем, с информацией, например, для json rpc.

Надеюсь, это поможет! Aaron

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...