编译Open3D源码遇错求助:WebRTC与运行时库不匹配问题
解决Open3D源码编译的两个关键错误
错误1:BUILD_SHARED_LIBS=ON时WebRTC预编译库不可用
错误提示明确给出三种解决途径,按需选择:
- 禁用WebRTC:CMake配置时添加参数
DBUILD_WEBRTC=OFF,但会丢失Open3D中WebRTC相关的实时可视化、流媒体功能。 - 改用静态库编译:调整CMake参数为
-DBUILD_SHARED_LIBS=OFF -DSTATIC_WINDOWS_RUNTIME=ON,使用预编译的WebRTC静态库,生成静态版本的Open3D。 - 从源码编译WebRTC:添加参数
-DBUILD_WEBRTC_FROM_SOURCE=ON,自行编译WebRTC以适配动态库模式。注意此方式会大幅增加编译时间和资源占用,需提前准备好WebRTC源码编译所需的依赖(如Python、Git、对应版本的编译器)。
错误2:RuntimeLibrary不匹配(MD_DynamicRelease vs MT_StaticRelease)
这个链接错误是编译环节中运行时库配置不一致导致的,统一配置即可解决:
- 若编译动态Open3D库:在CMake中明确指定运行时库为动态版本,添加参数:
同时如果选择从源码编译WebRTC(错误1的选项c),需确保WebRTC的编译也使用相同的动态运行时库配置。-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL # Release模式 # Debug模式用: # -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL - 若编译静态Open3D库:统一使用静态运行时库,CMake参数设置为:
这样所有组件的运行时库配置保持一致,即可避免链接错误。-DBUILD_SHARED_LIBS=OFF -DSTATIC_WINDOWS_RUNTIME=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded # Release模式 # Debug模式用: # -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug
内容的提问来源于stack exchange,提问作者mikkelsen1996
相关产品推荐
相关产品推荐

