Подтвердить что ты не робот

Связывание C + + программы с SpiderMonkey?

Я успешно скомпилированный spidermonkey (на окнах), как я могу связать его сейчас (до встроить его)?

js-config не установлен правильно, и я не понимаю это обходное решение.

Связывание с статической библиотекой должно быть проще, но я даже не знаю, какой файл он есть. У меня mozglue.lib, mozjs-43a1.lib, nspr4.lib, plc4.lib, plds4.lib в dist/sdk/lib и nspr4.lib, plc4.lib, plds4.lib в dist/lib.

Обновление

js-config не работал, потому что у меня была эта проблема (-bash: '\r': command not found из-за проблемы с символами новой строки Windows/Unix, я запустил dos2unix js-config, и я мог запускать она).

Однако выход не помогает (на окнах):

$ ./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

Примечания

Я использовал следующую команду для компиляции:

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

Я знаю, что это не правильный способ скомпилировать его, поскольку эти библиотеки не находятся в <objdir>/dist/lib. Он возвращает следующие ошибки:

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

Этот вопрос, кажется, привлекает некоторое внимание. Обратите внимание, что я спросил тот же вопрос для V8.

4b9b3361

Ответ 1

Простой способ использования spidermoney в проектах Cygwin (некоторые из ваших выводов показывают, что вы используете Cygwin) заключается в использовании пакета libmozjs185, доступного для Cygwin. Мой проект немного сложный, но make файл будет выглядеть примерно так:

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)

Если ваше приложение является только кодом "C", измените g++ выше на gcc. У меня есть больше библиотек помимо mozjs185, и я помещаю их в опцию $(NULL).

Ответ 2

Идея работы - запустить js-config -libs и поместить результат в JSAPI_LD_FLAGS, возможно, отфильтровать вещи в Darwin, а затем добавить JSAPI_LD_FLAGS в ваши LDFLAGS, чтобы вы могли связать правильные библиотеки.

Итак, для вашего вопроса в библиотеке, ответ заключается в том, чтобы создать js-config, а затем запустить его с помощью -libs

Аналогично, вы создадите свои CFLAGS, используя комбинацию CFLAGS, которая вам уже нужна, и вывод js-config --cflags. Это то, что вы, возможно, уже сделали с помощью полезной утилиты pkg-config для других библиотек.

Это не решает проблему с контентом. Почему бы вам просто не запустить configure script?