【问题标题】:how to compile pcp fileshare in libjingle如何在 libjingle 中编译 pcp 文件共享
【发布时间】:2012-08-09 10:48:39
【问题描述】:

好的,我正在尝试使用以下命令编译名为“pcp”的文件共享示例

 wolfgang@den-pc:~/tejesh/libjingle-0.6.14/programs$ g++ -g -Wall -DPOSIX
-DEXPAT_RELATIVE_PATH -DFEATURE_ENABLE_SSL -DHAVE_OPENSSL_SSL_H=1  -I ../ pcp_main.cc
 ../talk/build/dbg/lib/libxmpphelp.a ../talk/build/dbg/lib/libjingle.a ../talk/build
 /dbg/lib/libexpat.a ../talk/build/dbg/lib/libsrtp.a -lpthread -lssl

我收到以下“typeinfo”错误...

 pcp_main.cc: In member function ‘virtual void
 CustomXmppPump::OnStateChange(buzz::XmppEngine::State)’:
 pcp_main.cc:348:12: warning: enumeration value ‘STATE_NONE’ not handled in switch  
 [-Wswitch]
 /tmp/ccVe8JUg.o:(.rodata._ZTI14CustomXmppPump[typeinfo for CustomXmppPump]+0x18): 
 undefined reference to `typeinfo for XmppPump'
 /tmp/ccVe8JUg.o:(.rodata._ZTIN7cricket18SessionManagerTaskE[typeinfo for  
 cricket::SessionManagerTask]+0x8): undefined reference to `typeinfo for buzz::XmppTask'
 /tmp/ccVe8JUg.o:(.rodata._ZTIN7cricket15SessionSendTaskE[typeinfo for  
 cricket::SessionSendTask]+0x8): undefined reference to `typeinfo for buzz::XmppTask'
 /tmp/ccVe8JUg.o:(.rodata._ZTI17AutoPortAllocator[typeinfo for AutoPortAllocator]+0x8): 
 undefined reference to `typeinfo for cricket::HttpPortAllocator'
 collect2: ld returned 1 exit status

有人对这个问题有什么想法吗?

【问题讨论】:

标签: c++ ftp p2p voip libjingle


【解决方案1】:

如果你用gyp编译,你可以修改trunk/talk/libjingle_examples.gyp:

# target pcp
{
  'target_name': 'pcp',
  'type': 'executable',
  'dependencies': [
    'libjingle_xmpphelp',
    'libjingle.gyp:libjingle',
    'libjingle.gyp:libjingle_p2p',
  ],
  'sources': [
    'examples/pcp/pcp_main.cc',
  ],
},  # target pcp

再次运行 gclient runhooks 并制作。

【讨论】:

  • 手动添加 pcp 到libjingle_examples.gyp 后,你需要在 Linux 系统上这样:ninja -C out/Debug pcp。随后,您可以在trunk/out/Debug 中找到pcp 二进制文件。这同样适用于例如ninja -C out/Debug relayserver.
【解决方案2】:

这个错误可能是由一些没有定义的虚方法引起的 - 即你已经声明了它但你没有定义它的主体。

您可能没有在编译/链接中包含一些 .c/.cpp 文件?

【讨论】:

  • 将所有“virtual void function()”更改为“virtual void function() {}”,除了...“未定义的对 XmppPump 的 typeinfo 的引用”之外的所有错误都消失了...不能找到 XmppPump 的任何虚函数...还有什么可能是“typinfo”错误的原因...?
【解决方案3】:

确实通过 scons 成功编译 pcp,............在你的 talk/ 目录中将以下行添加到 'libjingle.scons'

 talk.App(env, name = "pcp",
 posix_libs = [
   "crypto",
   "ssl",
 ],
 srcs = [
   "examples/pcp/pcp_main.cc",
 ],

库 = [ “叮当”, “外籍人士”, "srtp", "xmpphelp", ], )

然后使用 libjingle 的 README 中的说明构建它。pcp 二进制文件将在您的 /talk/build/dbg/staging/ 目录中构建..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2012-06-03
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多