gpt4 book ai didi

c++ - 无法在原生 Dart 扩展中链接 v8

转载 作者:太空狗 更新时间:2023-10-29 12:40:39 24 4
gpt4 key购买 nike

我正在尝试在 Dart native extension 中使用 v8 .

v8 getting started guide说要像这样编译 hello world 示例。

g++ -I. -Iinclude samples/hello-world.cc -o hello-world -Wl,--start-group \
out.gn/x64.release/obj/{libv8_{base,libbase,external_snapshot,libplatform,libsampler},\
third_party/icu/libicu{uc,i18n},src/inspector/libinspector}.a \
-Wl,--end-group -lrt -ldl -pthread -std=c++0x

Dart 说要像这样编译 native 扩展:

g++ -fPIC -I{path to SDK include directory} -DDART_SHARED_LIB -c sample_extension.cc

gcc -shared -m32 -Wl,-soname,libsample_extension.so -o libsample_extension.so sample_extension.o

这是我想出的混合体

g++ -fPIC -I{path to SDK include directory} -Iinclude -DDART_SHARED_LIB -c sample_extension.cc -std=c++0x

gcc -shared -Wl,-soname,libsample_extension.so -Wl,--start-group out.gn/x64.release/obj/{libv8_{base,libbase,external_snapshot,libplatform,libsampler},third_party/icu/libicu{uc,i18n},src/inspector/libinspector}.a -Wl,--end-group -o libsample_extension.so sample_extension.o -lrt -ldl -pthread -std=c++0x

但是,在尝试运行我的应用程序时,我收到一条错误消息,指出 v8 未正确链接。

dart: symbol lookup error: /mnt/c/Users/zvacu/Documents/Code/Dart/require/libsample_extension.so: undefined symbol: _ZN2v82V828InitializeICUDefaultLocationEPKcS2_

使用提供的 hello world 示例时,我可以设法正确链接它。

最佳答案

稍微研究一下,问题似乎出在第二个命令的 -shared 属性上。您需要注意 C++ 和共享库,因此请通过以下方式检查您的库是否获得了所有依赖项:

ldd /mnt/c/Users/zvacu/Documents/Code/Dart/require/libsample_extension.so

之后你会得到一个所有依赖的列表,然后你需要搜索是否有遗漏的。

如果这不能回答您的问题,请参阅此相关答案:

Undefined symbol when loading a shared library

关于c++ - 无法在原生 Dart 扩展中链接 v8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45516657/

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