将C++程序与SpiderMonkey链接?

art*_*.sw 19 c++ compilation spidermonkey

我成功编译了spidermonkey(在windows上),我现在如何链接它(嵌入它)?

js-config未正确安装,我不明白这种解决方法.

链接到静态库应该更容易,但我甚至不知道它是哪个文件.我已经mozglue.lib, mozjs-43a1.lib, nspr4.lib, plc4.lib, plds4.libdist/sdk/libnspr4.lib, plc4.lib, plds4.libdist/lib.

更新

js-config因为我有这个问题(-bash: '\r': command not found因为Windows/Unix换行符问题,我跑了dos2unix js-config,我可以运行它),因此无法正常工作.

但是,输出没有帮助(在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

笔记

我用以下命令编译:

g++ -std=c++11 -I<objdir>/dist/include -L<objdir>/dist/lib helloworld.cpp -o helloworld  -lmozjs-31 -lz -lpthread -ldl 
Run Code Online (Sandbox Code Playgroud)

我知道这不是编译它的正确方法,因为那些库不在<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
Run Code Online (Sandbox Code Playgroud)

这个问题似乎引起了一些注意.请注意,我为V8问了同样的问题.

car*_*man 3

在 Cygwin 项目中使用 Spidermoney 的简单方法(一些输出表明您正在使用 Cygwin)是使用可用于 Cygwin 的 libmozjs185 软件包。我的项目有点复杂,但 makefile 看起来像这样:

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)
Run Code Online (Sandbox Code Playgroud)

如果您的应用程序只有“C”代码,请将上面的 g++ 更改为 gcc。除了 mozjs185 之外,我还有更多库,我将它们放在 $(NULL) 之前。