2008-09-19 11 views
12

¿Utiliza Luabind, toLua ++, o alguna otra biblioteca (si es así, cuál) o ninguna?¿Cómo pegas Lua al código C++?

Para cada acercamiento, ¿cuáles son los pro y los contras?

+0

upps ... corregido :) – steffenj

+0

Hubo un debate sobre este tema [aquí] (http://stackoverflow.com/questions/63784/implementing-scripts-in-c-app#63865). – Mark

Respuesta

4

para responder a mi propia pregunta en parte:

Luabind: una vez que sabes cómo enlazar los métodos y las clases a través de esta sintaxis de la plantilla incómoda, es bastante sencillo y fácil de añadir nuevos enlaces. Sin embargo, luabind tiene un impacto significativo en el rendimiento y no debe usarse para aplicaciones en tiempo real. Alrededor de 5-20 veces más sobrecarga que llamar a las funciones C que manipulan la pila directamente.

1

No utilizo ninguna biblioteca. He usado SWIG para exponer una biblioteca de C hace un tiempo, pero había demasiada sobrecarga y dejo de usarla.

Los pros tienen un mejor rendimiento y más control, pero lleva más tiempo escribirlos.

1

Utilice la API Lua sin procesar para sus enlaces y manténgala simple. Inspírate en la API en sí (biblioteca AUX) y en las bibliotecas de los autores de Lua.

Con cierta práctica, la API sin formato es la mejor opción: máxima flexibilidad y mínimo de sobrecarga innecesaria. Tienes lo que quieres y nada más, de la manera que lo necesitas.

Si debe vincular grandes bibliotecas de terceros, use generadores automáticos como tolua, tolua ++ (o incluso aplique los propios para el caso específico). Lo liberaría del trabajo manual.

No recomendaría usar Luabind. En este momento su desarrollo está estancado (sin embargo, está empezando a volver a la vida), y si se encuentra con algún caso en la esquina, puede estar solo. También Luabind usa mucho la metaprogramación de plantillas. Esto puede (y puede que no) ser inaceptable, dependiendo del punto de vista.

+0

Aparte de las personas que pueden estar usando compiladores que no admiten TMP, no veo por qué sería inaceptable.En cuanto al desarrollo, hay algunos (recientemente contribuí con una mejora/solución), y la mayoría de las veces no creo que carezcan de algo demasiado importante. No es * muy * activo, sin embargo, es cierto. –

5

Realmente no puedo estar de acuerdo con el voto 'enrollar tu propio', vinculando tipos básicos y funciones C estáticas a Lua es trivial, sí, pero la imagen cambia en el momento en que empiezas a lidiar con tablas y metatablas; las cosas van más complicadas muy rápido.

Parece que LuaBind hace el trabajo, pero tengo un problema filosófico. Para mí, parece que si tus tipos ya son complicados, el hecho de que Luabind tenga muchas plantillas no va a hacer que tu código sea más fácil de seguir, como dijo un amigo mío: "necesitarás que Herb Shutter descubra los mensajes de compilación" . Además, depende de Boost, además los tiempos de compilación reciben un golpe serio, etc.

Después de probar algunas fijaciones, Tolua ++ parece ser el mejor. Tolua no parece estar muy en desarrollo, mientras que Tolua ++ parece funcionar bien (más la mitad de los tutoriales de 'Tolua' que hay, de hecho, tutoriales de 'Tolua ++', créanme sobre eso :) Tolua genera el derecho cosas, la fuente se puede modificar y parece tratar casos complicados (como plantillas, uniones, estructuras sin nombre, etc.)

El mayor problema con Tolua ++ parece ser la falta de tutoriales adecuados, Visual preestablecida Proyectos de estudio, o el hecho de que la línea de comando es un poco difícil de seguir (tu ruta/archivos no pueden tener espacios en blanco -al menos en Windows-). Sin embargo, para mí es el ganador.