gpt4 book ai didi

c++ - 嵌入 SpiderMonkey JS

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:10:37 25 4
gpt4 key购买 nike

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

我正在使用 CMake,但无法构建。因此,为了减少并发症,我尝试了此 page 上的示例代码.这不会从命令行使用 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

header 已找到,链接器正在查找 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”可执行文件工作正常,我假设它有我试图在其中链接的库。所以我会认为 lib 本身构建得很好。

谁能帮我解决这些链接器错误?关于旧版本的 SpiderMonkey 的问题有很多答案,但没有关于较新版本的答案。我对 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。再次查看才发现它只是在错误的位置。)

关于c++ - 嵌入 SpiderMonkey JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42171598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com