Question Lier un programme C ++ à SpiderMonkey?


J'ai réussi spidermonkey compilé (sur windows), comment puis-je me connecter maintenant (à incorporer)?

js-config n'est pas correctement installé, et je ne comprends pas cette solution de contournement.

La liaison à la bibliothèque statique devrait être plus facile, mais je ne sais même pas de quel fichier il s'agit. j'ai mozglue.lib, mozjs-43a1.lib, nspr4.lib, plc4.lib, plds4.lib dans dist/sdk/lib et nspr4.lib, plc4.lib, plds4.lib dans dist/lib.

Mettre à jour

js-config ne fonctionnait pas parce que j'avais ce problème (-bash: '\r': command not found à cause de Windows / Unix problème de caractères de nouvelle ligne, j'ai couru dos2unix js-config et je pourrais le lancer).

Cependant, la sortie n'aide pas (sous 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

Remarques

J'ai utilisé la commande suivante pour compiler:

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

Je sais que ce n'est pas la bonne façon de le compiler car ces bibliothèques ne sont pas dans <objdir>/dist/lib. Il renvoie les erreurs suivantes:

[...]/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

Cette question semble attirer l'attention. Notez que j'ai demandé au même question pour V8.


19
2017-09-01 10:11


origine


Réponses:


La méthode la plus simple pour utiliser spidermoney dans les projets Cygwin (certains de vos résultats suggèrent que vous utilisez Cygwin) consiste à utiliser le package libmozjs185 disponible pour Cygwin. Mon projet est un peu compliqué mais un makefile ressemblerait à ceci:

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 votre application est uniquement en code C, changez le g ++ ci-dessus en gcc. J'ai plus de bibliothèques en dehors de mozjs185 et je les place avant le $ (NULL).


3
2017-10-06 01:24



L'idée derrière ce travail est d'exécuter js-config --libs et de placer le résultat dans JSAPI_LD_FLAGS, éventuellement d'éliminer les éléments de Darwin, puis d'ajouter JSAPI_LD_FLAGS à votre LDFLAGS pour pouvoir lier les bonnes bibliothèques.

Donc, pour votre question de bibliothèque, la réponse est de faire en sorte que js-config soit construit, puis de l'exécuter avec --libs

De même, vous créeriez votre CFLAGS en utilisant une combinaison des CFLAGS dont vous avez besoin et la sortie de js-config --cflags . C'est quelque chose que vous avez peut-être déjà trouvé avec l'utilitaire nifty pkg-config pour d'autres bibliothèques.

Cela ne résout pas le problème d'endianness. Pourquoi ne lancez-vous pas simplement le script configure?


3
2017-10-02 01:22