C++ 链接V8时未定义的引用

C++ 链接V8时未定义的引用,c++,linker,g++,linker-errors,v8,C++,Linker,G++,Linker Errors,V8,我正在努力用V8编译一个非常小的示例 cpp计划是这样的: #include "v8.h" int main() { v8::HandleScope handle_scope; return 0; } 编译行:g++-I/home/lteje/git/tengine/Externals/v8/include/home/lteje/git/tengine/Externals/v8/out/ia32.release/obj.target/tools/gyp/libv8_sn

我正在努力用V8编译一个非常小的示例

cpp计划是这样的:

#include "v8.h"

int main()
{
     v8::HandleScope handle_scope;

     return 0;
}
编译行:g++-I/home/lteje/git/tengine/Externals/v8/include/home/lteje/git/tengine/Externals/v8/out/ia32.release/obj.target/tools/gyp/libv8_snapshot.a test.cpp-o test-lpthread

我得到的错误是:

/tmp/ccHYtJuE.o: In function `main':
test.cpp:(.text+0x11): undefined reference to `v8::HandleScope::HandleScope()'
test.cpp:(.text+0x22): undefined reference to `v8::HandleScope::~HandleScope()'
collect2: error: ld returned 1 exit status
基本、快照和无快照库文件之间的具体区别是什么?我尝试过与它们中的每一个链接,但都不起作用:/

编译行:
g++-I/home/lterje/git/tengine/Externals/v8/include/home/lterje/git/tengine/Externals/v8/out/ia32.release/obj.target/tools/gyp/libv8_snapshot.a test.cpp-o test-lpthread

此链接行不正确。请尝试以下方法:

g++ -I/home/lterje/git/tengine/Externals/v8/include \
  test.cpp -o test \
  /home/.../obj.target/tools/gyp/libv8_snapshot.a \
  -lpthread

阅读理解订单的重要性。

首先,我必须为我糟糕的英语说声抱歉。 我刚刚将.a文件链接到我自己的项目。 由于libv8_快照的依赖关系,出现ld错误。未提供

这是我的编译语句:

g++-o xxxxx-I~v8/out/native/obj.target/tools/gyp/libv8{base.native,snapshot}.a~v8/out/native/obj.target/third_/icu/libicu{data,i18n,snapshot}.a~v8/out/native/obj.target/icudata/third_-party/icu/linux/icudt46_-dat.o-lrt-lpthread

我认为libv8_base.native.a libv8_snapshot.a依赖于icu和icudt46文件,并且有一些关于unix时钟时间的函数依赖于“rt”,所以添加“-lrt”

希望能对大家有所帮助~
作为一个中国人,对不起我的英语。

你如何链接这些图书馆?你有一个CMakeLists.txt文件吗?如果你看底部和第3点,你能把它包括进来吗,就像你能给出完整的路径一样?你需要下载并安装v8库,如果你把它们安装在一个默认路径上,比如/usr/local/lib等等。。。然后就可以使用-llibv8或-lv8之类的工具来链接它们了。你这么做了吗?正如你从编译行看到的,我已经将它下载到一个文件夹中,并用gyp构建了它。。他们没有在我上面发布的链接上链接到v8?我甚至认为libv8已经不存在了。。它的libv8_base.a、libv8_snapshot.a和libv8_nosnapshot.a,正如我前面提到的。。你以前建造过吗?如果是,你建造的路线是什么?你没有按照说明。
.a
文件需要在命令行中跟踪源文件。