1. 程式人生 > 其它 >undefined reference to

undefined reference to

https://github.com/NativeScript/android-v8/issues/20

nm -gAC libv8.a | grep "v8::platform::NewDefaultPlatform"

libv8.a:default-platform.o:0000000000000000 T v8::platform::NewDefaultPlatform(int, v8::platform::IdleTaskSupport, v8::platform::InProcessStackDumping, std::__Cr::unique_ptr<v8::TracingController, std::__Cr::default_delete<v8::TracingController> >)

err

/usr/bin/ld: ./so/libv8a1.so: undefined reference to `v8::platform::NewDefaultPlatform(int, v8::platform::IdleTaskSupport, v8::platform::InProcessStackDumping, std::unique_ptr<v8::TracingController, std::default_delete<v8::TracingController> >)'

You can try searching the exported symbols from the static library using :nm

nm -gAC libv8.a | grep "v8::platform::NewDefaultPlatform"
通常,您應該看到以下輸出:

libv8.a:default-platform.o:0000000000000000 T v8::platform::NewDefaultPlatform(int, v8::platform::IdleTaskSupport, v8::platform::InProcessStackDumping, std::__Cr::unique_ptr<v8::TracingController, std::__Cr::default_deletev8::TracingController

>)
如您所見,此版本中使用了一些不同的名稱空間:

std::__Cr::unique_ptr
而不是

std::__ndkCr::unique_ptr
錯誤訊息似乎表明您沒有在 v8 生成期間使用的專案中使用自定義 libc++。因此,請確保針對此自定義 STL 進行連結,以便成功編譯。你可以看看這是如何在android執行時CMakeLists中實現的.txt