无法在 C++ 应用程序中包含 libv8

无法在 C++ 应用程序中包含 libv8

我试图在我的 c++ 脚本中使用该包。该包按预期libv8-3.8.9.20安装,但如果我尝试使用命令编译我的脚本,则什么也没有发生。/usr/lib/g++ script.cpp -Iv8

脚本的标题中应该包含什么内容才能使用该库?这是我尝试过的:

#include <v8>
#include <libv8>
#include <libv8.so>
#include <v8.so>

下一行是using namespace v8命令。当我执行此操作时,g++返回错误:

index.cpp:1:20: fatal error: libv8.so: No such file or directory
 #include <libv8.so>
                    ^
compilation terminated.

或者类似的东西。我甚至尝试过不使用标头来编译它,但g++不喜欢这样。

可以这样使用库吗?怎么使用?谢谢,m93a

编辑: 安装后libv8-dev(或者libv8-3.14-dev,我都试过了)编译器抛出:

index.cpp: In function ‘int main(int, char**)’:
index.cpp:10:35: error: no matching function for call to ‘v8::HandleScope::HandleScope(v8::Isolate*&)’
   HandleScope handle_scope(isolate);
                                   ^
index.cpp:10:35: note: candidates are:
In file included from index.cpp:1:0:
/usr/include/v8.h:473:3: note: v8::HandleScope::HandleScope(const v8::HandleScope&)
   HandleScope(const HandleScope&);
   ^

等等......(太长了,仍然说没有找到某些东西)
我正在使用g++ main.cpp -lv8命令。

答案1

要在编写的程序中使用库(至少在 C/C++ 中),您不仅需要编译后的库(.so-共享对象该库不仅包含一个文件(file),而且还包含一个头文件,用于描述该库所使用的函数和数据结构。

头文件通常不会默认安装。它们通常位于名为 的包中libwhatever-dev,在本例中libv8-dev需要安装。

然后你需要以下行:

#include <v8.h>

包含 V8 标头。编译时,您还需要告诉 g++ 链接到 v8 库 ( -lv8)。V8 是一个相当复杂的怪物,找到一个可行的示例或教程来了解他们如何编译它可能是明智之举。

最后,关于术语的说明:脚本通常是指由解释器(例如python),而这必须先进行编译才能运行。

相关内容