使用 PjSip 编译 Opus 库时出错 {PJSUA}

Error while Compiling Opus Library with PjSip {PJSUA}

提问人:codename-SAMY 提问时间:1/15/2022 更新时间:1/27/2022 访问量:419

问:

我正在尝试编译和构建 PjProject {PJSUA},其中包含音频和视频支持。但每次都陷入错误,这是Unresolved_External_Symbols

我正在使用 Visual Studio 2022 和工具链集最新版本 v143 为 Windows-32 位构建这个项目。

我想初始化各种编解码器 {OPUS、OPENH264、FFMPEG、OPENSSL、SDL 等}。我只想问一下OPUS图书馆

步骤如下:

  1. 获取最新版本的 PjProject 的源代码并在 Visual Studio 2022 中加载项目。

  2. 编译构建 LibOpus 后,请提及 Opus Include 目录和 Opus 库目录。

  3. 将 PJSUA 设置为源项目,并将配置设置为 Debug-Static-Win32,然后开始生成项目。

注意

  • 其他附加依赖项,如 SDL 头文件和 lib 文件已经包含在内。
  • config_site.h 已用于定义编解码器使用 {#define PJMEDIA_HAS_OPUS_CODEC 1}

我在错误日志中收到的错误如下:

Error   LNK2019 unresolved external symbol _opus_encoder_get_size referenced in function _pjmedia_codec_opus_set_default_param  pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_encoder_init referenced in function _pjmedia_codec_opus_set_default_param  pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_encode referenced in function _pjmedia_codec_opus_set_default_param    pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_encoder_ctl referenced in function _pjmedia_codec_opus_set_default_param   pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_decoder_get_size referenced in function _pjmedia_codec_opus_set_default_param  pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_decoder_init referenced in function _pjmedia_codec_opus_set_default_param  pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_decode referenced in function _pjmedia_codec_opus_set_default_param    pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_packet_get_nb_samples referenced in function _pjmedia_codec_opus_set_default_param pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_repacketizer_get_size referenced in function _pjmedia_codec_opus_set_default_param pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_repacketizer_init referenced in function _pjmedia_codec_opus_set_default_param pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_repacketizer_cat referenced in function _pjmedia_codec_opus_set_default_param  pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_repacketizer_out_range referenced in function _pjmedia_codec_opus_set_default_param    pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_repacketizer_get_nb_frames referenced in function _pjmedia_codec_opus_set_default_param    pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK2019 unresolved external symbol _opus_repacketizer_out referenced in function _pjmedia_codec_opus_set_default_param  pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\build\libpjproject-i386-Win32-vc14-Debug-Static.lib(opus.obj)    1
Error   LNK1120 14 unresolved externals pjsua   C:\Users\coral\Desktop\pjproject-master\pjsip-apps\bin\pjsua-i386-Win32-vc14-Debug-Static.exe   1

我能否获得一种更简单的方法,以便我可以通过 soving 它来摆脱所有这些错误,并编译和构建包含 OPUS CODEC 的 PJSUA。

编解码器 未解析的外部 Opus PJSUA2

评论

0赞 Bart 1/16/2022
您是否编译了 opus-1.3.1 并在 pj 项目的库路径中包含输出文件 (opus.lib) 的位置 (opus-1.3.1\win32\VS2015\Win32\Debug)?
0赞 codename-SAMY 1/20/2022
是的,我已经编译并包含输出文件和输出位置到 PJSUA,此外,我已经使用相同的工具集和 32 位配置编译了所有必需的库。

答:

0赞 codename-SAMY 1/27/2022 #1

经过长时间的尝试,我得到了如下解决方案:

  1. 在 config_site.h 中,我们需要提及并激活我们的编解码器以进行编译 #define PJMEDIA_HAS_OPUS_CODEC

#define PJMEDIA_HAS_OPUS_CODEC 必须处于活动状态,则必须从程序中明确删除 #define PJMEDIA_HAS_OPUS_CODEC 1 的其余函数行,以便于编译,这将省略在构建过程中调用的不同函数。

我仍然会提到,在Windows上构建时,请使用Microsoft Visual Studio最新版本以及最新的工具集来编译和构建单个链接器的不同程序。