首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入SpiderMonkey JS

嵌入SpiderMonkey JS
EN

Stack Overflow用户
提问于 2017-02-11 10:40:42
回答 1查看 1K关注 0票数 2

我正在开发一个C++应用程序。我想在应用程序中嵌入SpiderMonkey。

我正在和CMake合作,但是我不能得到那个版本。因此,为了减少复杂性,我在这个page上尝试了示例代码。这不能从命令行使用cmake或gcc进行链接。

所以,更简单的是,为了确保我可以正确地链接,我正在尝试让以下内容工作。在命令行中使用gcc:

代码语言:javascript
复制
g++ --std=c++11 
  -I/home/thetasinner/moz/js/src/build_DBG.OBJ/dist/include     
  -L/home/thetasinner/moz/js/src/build_DBG.OBJ/js/src -DDEBUG 
  -Wl,--verbose -lmozjs-54a1 -lm -lz -ldl test.cpp -o test

在下面的最小代码示例中:

代码语言:javascript
复制
#include <iostream>
#include <stdexcept>
#include "jsapi.h"
#include "js/Initialization.h"

int main(int argc, char** args) {
  if (!JS_Init()) {
    throw std::runtime_error("failed to initialise.");  
  }

  std::cout << "It's alive!\n";

  JS_ShutDown();
  return 0;
}

甚至连这也没有联系。我得到了错误

代码语言:javascript
复制
/tmp/ccqjx5RY.o: In function `main':
  custom.cpp:(.text+0xf2): undefined reference to `JS_ShutDown()'
/tmp/ccqjx5RY.o: In function `JS_Init()':
  custom.cpp:(.text._Z7JS_Initv[_Z7JS_Initv]+0xa): undefined reference to
      'JS::detail::InitWithFailureDiagnostic(bool)'
collect2: error: ld returned 1 exit status

找到了头文件,链接器找到了mozjs库

代码语言:javascript
复制
attempt to open /home/thetasinner/moz/js/src/custom_build_DBG.OBJ/js/src 
  /libmozjs-54a1.so succeeded
-lmozjs-54a1 (/home/thetasinner/moz/js/src/custom_build_DBG.OBJ/js/src
  /libmozjs-54a1.so)

我在Linux (Ubuntu 16.04和Debian 8.7尝试过)上工作,因为那里有构建工具。我还不想碰窗子呢。

蜘蛛猴构建的'js‘可执行文件运行良好,我假设里面有我想要链接的lib。所以我会认为lib本身构建的很好。

有人能帮我解决这些链接器错误吗?关于更老的SpiderMonkey版本的问题有很多答案,但对于较新的版本没有任何答案。我对版本45 (我已经尝试过非常类似的错误)或tip版本52很感兴趣。我很喜欢在代码中钻研,找出如何在它构建后做我想做的事情,因此对没有适当文档的最新版本感兴趣,我只是完全被构建步骤难住了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-11 10:52:08

我怀疑这只是命令行上的排序问题:

代码语言:javascript
复制
g++ --std=c++11 
-I/home/thetasinner/moz/js/src/build_DBG.OBJ/dist/include     
-L/home/thetasinner/moz/js/src/build_DBG.OBJ/js/src -DDEBUG 
test.cpp -o test
-Wl,--verbose -lmozjs-54a1 -lm -lz -ldl 

首先编译,然后是链接,按照依赖的顺序与库进行链接。(我的第一个猜测是您忽略了在命令行中提到mozjs。我又看了一眼,才发现它放错了地方。)

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

https://stackoverflow.com/questions/42171598

复制
相关文章

相似问题

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