【问题标题】:Build errors while compiling Java TD client编译 Java TD 客户端时生成错误
【发布时间】: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。 --目标安装

标签: c++ cmake linker telegram


【解决方案1】:

我一定是在某处弄乱了路径。我删除了文件夹,再次克隆它并按照此工具中的步骤操作:

https://tdlib.github.io/td/build.html?language=Java

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多