我成功了编译spidermonkey(在windows上),我现在如何链接到它(到嵌入它)?
链接到静态库应该更容易,但我不知道它是哪个文件。我有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
。
但是,输出(在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
返回以下错误:
[...]/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
在Cygwin项目中使用SpiderMoney的简单方法(一些输出表明正在使用Cygwin)是使用Cygwin可用的libmozjs 185包。我的项目有点复杂,但是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)
如果应用程序仅为C代码,请将上面的g++更改为gcc。除了mozjs 185之外,我还有更多的库,我把它们放在$(NULL)之前。
其背后的想法是运行js-config-lib并将结果放到JSAPI_LD_FLAGS中。可能会过滤出达尔文上的内容,然后追加JSAPI_LD_FLAGS到您的LDFLAGS,以便可以链接正确的库。
因此,对于库问题,答案是构建js-config,然后使用--libs运行它。