首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用SpiderMonkey链接C++程序?

用SpiderMonkey链接C++程序?
EN

Stack Overflow用户
提问于 2015-09-01 18:11:48
回答 2查看 1.3K关注 0票数 19

我成功的compiled spidermonkey (在windows上),我现在怎么能链接到它(到embed it)?

js-config没有正确安装,我不理解this workaround

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

更新

js-config不能工作是因为我有this problem (-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

笔记

我使用以下命令进行编译:

代码语言:javascript
复制
g++ -std=c++11 -I<objdir>/dist/include -L<objdir>/dist/lib helloworld.cpp -o helloworld  -lmozjs-31 -lz -lpthread -ldl 

我知道这不是编译它的正确方法,因为这些库不在<objdir>/dist/lib__中。它返回以下错误:

代码语言:javascript
复制
[...]/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

这个问题似乎引起了一些关注。请注意,我询问了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-06 09:24:51

在Cygwin项目中使用spidermoney的简单方法(您的一些输出表明您正在使用Cygwin)是使用Cygwin可用的libmozjs185包。我的项目有点复杂,但makefile应该是这样的:

代码语言:javascript
复制
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)之前。

票数 3
EN

Stack Overflow用户

发布于 2015-10-02 09:22:06

解决方法背后的想法是运行js-config --libs并将结果放在JSAPI_LD_FLAGS中,可能会过滤掉Darwin上的内容,然后将JSAPI_LD_FLAGS附加到您的LDFLAGS中,这样您就可以链接正确的库。

因此,对于您的库问题,答案是构建js-config,然后使用--libs运行它

同样,您可以使用已经需要的CFLAGS和js-config --cflags的输出的组合来创建您的CFLAGS。这是您可能已经发现自己使用其他库的漂亮pkg-config实用程序所做的事情。

这并不能解决字节顺序问题。为什么不直接运行配置脚本呢?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32328960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档