c++ compilation spidermonkey

¿Vinculando un programa de C++ con SpiderMonkey?



compilation (2)

Compilé con éxito spidermonkey (en windows), ¿cómo puedo enlazarlo ahora (para incrustarlo )?

js-config no está instalado correctamente y no entiendo esta solución .

El enlace a la biblioteca estática debería ser más fácil, pero ni siquiera sé qué archivo es. Tengo mozglue.lib, mozjs-43a1.lib, nspr4.lib, plc4.lib, plds4.lib en dist/sdk/lib y nspr4.lib, plc4.lib, plds4.lib en dist/lib .

Actualizar

js-config no funcionaba porque tenía este problema ( -bash: ''/r'': command not found debido al problema de caracteres de nueva línea de Windows / Unix, ejecuté dos2unix js-config y pude ejecutarlo).

Sin embargo, la salida no ayuda (en Windows):

$ ./js-config --cflags -std=gnu++0x -include /usr/local/include/mozjs-43a1/js/RequiredDefines.h -I/usr/local/include/mozjs-43a1 -Ic:/Users/Yvain/Documents/mozilla-central/js/src/build_OPT.OBJ/dist/include/nspr

$ ./js-config --libs ${libdir}/${JS_LIBRARY_NAME}.lib c:/Users/Yvain/Documents/mozilla-central/js/src/build_OPT.OBJ/dist/lib/nspr4.lib c:/Users/Yvain/Documents/mozilla-central/js/src/build_OPT.OBJ/dist/lib/plc4.lib c:/Users/Yvain/Documents/mozilla-central/js/src/build_OPT.OBJ/dist/lib/plds4.lib kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib psapi.lib

Notas

Utilicé el siguiente comando para compilar:

g++ -std=c++11 -I<objdir>/dist/include -L<objdir>/dist/lib helloworld.cpp -o helloworld -lmozjs-31 -lz -lpthread -ldl

Sé que no es la forma correcta de compilarlo ya que esas bibliotecas no están en <objdir>/dist/lib . Devuelve los siguientes errores:

[...]/jscpucfg.h:121:3: erreur: #error "Cannot determine endianness of your platform. Please add support to jscpucfg.h." [...] erreur: ‘JS_EvaluateScript’ was not declared in this scope

Esta pregunta parece llamar la atención. Tenga en cuenta que hice la misma pregunta para V8 .


La forma fácil de usar spidermoney en los proyectos de Cygwin (algunos de sus resultados sugieren que está utilizando Cygwin) es usar el paquete libmozjs185 que está disponible para Cygwin. Mi proyecto es un poco complicado pero un makefile se vería así:

CFLAGS += -g -I/usr/include/js -DXP_UNIX CXXFLAGS += -g -I/usr/include/js -DXP_UNIX JSLINK=-lmozjs185 objs = <your .o files> <your app>: $(objs) g++ -g -o <your app> $(objs) / $(JSLINK) / $(NULL)

Si su aplicación es solo el código ''C'', cambie el g ++ anterior a gcc. Tengo más bibliotecas además de mozjs185 y las coloco por delante de $ (NULL).


La idea detrás del trabajo es ejecutar js-config --libs y poner el resultado en JSAPI_LD_FLAGS, posiblemente filtrar cosas en Darwin, y luego agregar JSAPI_LD_FLAGS a tus LDFLAGS para que puedas vincular las bibliotecas correctas.

Entonces, para la pregunta de la biblioteca, la respuesta es compilar js-config y luego ejecutarlo con --libs

Del mismo modo, creará su CFLAGS utilizando una combinación de los CFLAGS que ya necesita y la salida de js-config --cflags . Esto es algo que quizás ya haya encontrado haciendo con la utilidad pkg-config para otras bibliotecas.

Esto no resuelve el problema del endianismo. ¿Por qué no ejecutas el script de configuración?