【发布时间】:2019-07-22 13:53:42
【问题描述】:
尝试构建 TD: https://github.com/tdlib/td
https://github.com/tdlib/td/tree/master/example/java
主构建工作正常,但 Java 示例却不行。 我的设置:
Ubuntu 18.04.2 LTS
cmake 3.10.2
gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
OpenSSL 1.1.1 11 Sep 2018
1:1.2.11.dfsg-0ubuntu2
gperf 3.1-1
大约 30 分钟后,CMake 将其吐出.. 任何想法这意味着什么以及我可以从这里去哪里?
Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0xc8): undefined reference to vtable for td::td_api::formattedText' Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0xeb): undefined reference to vtable for td::td_api::textEntity'
Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x15d): undefined reference to vtable for td::td_api::photo' Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x190): undefined reference to vtable for td::td_api::photoSize'
Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x1ab): undefined reference to vtable for td::td_api::file' Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x1c3): undefined reference to vtable for td::td_api::remoteFile'
Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x201): undefined reference to vtable for td::td_api::localFile' Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x29a): undefined reference to vtable for td::td_api::animation'
Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x2b5): undefined reference to vtable for td::td_api::file' Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x2ce): undefined reference to vtable for td::td_api::remoteFile'
Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x305): undefined reference to vtable for td::td_api::localFile' Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x34c): undefined reference to vtable for td::td_api::photoSize'
Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x369): undefined reference to vtable for td::td_api::file' Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x380): undefined reference to vtable for td::td_api::remoteFile'
Game.cpp:(.text._ZNK2td4Game15get_game_objectEPNS_2TdE+0x3b6): undefined reference to vtable for td::td_api::localFile' libtdcore.a(Game.cpp.o): In function td::process_input_message_game(td::ContactsManager const*, td::tl::unique_ptrtd::td_api::InputMessageContent&&)':
Game.cpp:(.text._ZN2td26process_input_message_gameEPKNS_15ContactsManagerEONS_2tl10unique_ptrINS_6td_api19InputMessageContentEEE+0xbc): undefined reference to `vtable for td::td_api::inputMessageGame'
collect2: error: ld returned 1 exit status
make[2]: *** [tg_cli] Error 1
make[1]: *** [CMakeFiles/tg_cli.dir/all] Error 2
make: *** [all] Error 2
undefined reference to vtable 是什么意思?我是不是忘了先编译别的东西?还是在错误的文件夹中?
【问题讨论】:
-
如果您使用 CMake GUI 运行,您应该会看到定义的
TD_ENABLE_JNI变量。是否启用(设置为ON)? -
换句话说,当您运行构建步骤时,您是否为
cmake包含了参数-DTD_ENABLE_JNI=ON? -
不,但我会尝试。谢谢!!
-
我确定我做到了,说明说要运行:cmake -DCMAKE_BUILD_TYPE=Release -DTD_ENABLE_JNI=ON -DCMAKE_INSTALL_PREFIX:PATH=../example/java/td .. cmake --build。 --目标安装