Embedding SpiderMonkey JS
Embedding SpiderMonkey JS
我正在开发一个C++应用程序。我想在应用程序中嵌入SpiderMonkey。
我正在与CMake合作,但我无法获得该版本。因此,为了减少复杂性,我尝试了本页上的示例代码。这不会从命令行使用cmake或gcc进行链接。
所以,更简单的是,为了确保我可以正确链接,我正在努力让以下内容发挥作用。从带有gcc:的命令行
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
关于以下最小代码示例:
#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;
}
即使这样也没有联系。我得到错误
/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库
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尝试过),因为这就是构建工具的所在。我甚至还不想碰Window的。
spidermonkey构建中构建的"js"可执行文件运行良好,我认为它内部有我试图链接的库。所以我认为库本身构建得还可以。
有人能帮我解决这些链接器错误吗?关于蜘蛛猴的老版本,有很多问题的答案,但对于最近的版本,没有什么答案。我对版本45(我尝试过类似的错误)或提示版本52感兴趣。我很乐意在代码中四处挖掘,弄清楚一旦构建完成,如何用它做我想做的事情,因此对没有正确记录的最新版本感兴趣,我只是完全被构建步骤难住了。
我怀疑这只是命令行上的排序问题:
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。再看一眼就发现它放错了地方。)
相关文章:
- JS相等运算符(如===)是否可以使用embind类型
- 在 ubuntu 上安装 node js pulsar 客户端
- 如何在 Arduino 字符串的开头添加元素.类似于 JS unshift();
- Node.js fs.open() 在尝试打开 4 个以上的命名管道 (FIFO) 后挂起
- 如何在 Cheerp/js 中迭代动态命名的对象?
- 如何与 Cheerp/js 中的 extern 变量接口?
- 在 node.js 中将缓冲区从 C++ 转换为 UTF-8 字符串
- glfw 的基本设置会导致与 emscripten 生成的 js 文件中的事件侦听器有关的运行时错误
- 如何在C++中使用带有SFML的http reqest从节点.js服务器获取数据?
- 使用 Node.js N-API 调用 C 函数时,不会显示预期的输出
- 将数据从 OpenCV C++传递到 NodeJS/JS |电子
- C++ - 实现JS的setTimeout的现代方法
- 节点.js HTTP 无法通过套接字接收来自C++客户端的请求
- 如何使用 v8 本机插件将 C++ 数组交付到 Node.js
- 将二进制字符串/文件内容从 c++ 传递到节点 js
- 有没有类似的函数,比如 c++ 中的 JS Array.prototype.map?
- C++ 和 node.js 之间的 RSA 加密
- Embedding SpiderMonkey JS
- 将JS 1.7.0迁移到SpiderMonkey 24后,JS_DestoryContext中出现错误
- 如何在spidermonkey嵌入中提供js-cypes