编译OpenMVS

本文详细介绍了在编译OpenMVS过程中遇到的函数重名错误及解决方案,包括修改库文件名、编译图像接口库、配置GLEW和GLFW路径、调整CMakeLists.txt文件、更改头文件包含路径等步骤。

编译OpenMVS

报错函数重名

修改boost_program_options-vc140-mt-x64-1_67.lib为
libboost_program_options-vc140-mt-x64-1_67.lib

编译jpg,png,zlib,tiff

image的接口库也要编译,不然运行的时候会出错

编译viewer

glew要在…/glew-2.1.0/lib/Release/x64/glew32.lib
glfw要在…/GLFW/lib/cmake/glfw3

编译InterfaceOpenMVG

修改app文件夹下的CMakeLists.txt:
Add applications
ADD_SUBDIRECTORY(InterfaceCOLMAP)
ADD_SUBDIRECTORY(InterfaceOpenMVG)
ADD_SUBDIRECTORY(InterfaceVisualSFM)
ADD_SUBDIRECTORY(DensifyPointCloud)
ADD_SUBDIRECTORY(ReconstructMesh)
ADD_SUBDIRECTORY(RefineMesh)
ADD_SUBDIRECTORY(TextureMesh)
ADD_SUBDIRECTORY(Viewer)
添加ADD_SUBDIRECTORY(InterfaceOpenMVG)

删除
#include <openMVG/image/image.hpp>

添加
#include <openMVG/image/image_io.hpp>
#include <openMVG/cameras/Camera_Pinhole.hpp>
#include <openMVG/cameras/Camera_undistort_image.hpp>

添加目录
C:\Program Files\openMVG\include
添加库
C:\Program Files\openMVG\lib\openMVG_image.lib
C:\Program Files\openMVG\lib\openMVG_sfm.lib
C:\Program Files\openMVG\lib\openMVG_stlplus.lib

修改
getFullFileName->getFileFullName
ensureDirectorySlash->ensureFolder

### openMVS 编译报错解决方案 在编译 openMVS 的过程中可能会遇到多种类型的错误,这些错误通常与依赖项配置不当、编译器设置不匹配或者第三方库版本冲突有关。以下是针对常见问题的具体分析和解决办法: #### 1. **C++标准兼容性问题** 某些情况下,由于 C++ 版本的差异可能导致编译失败。例如,`Integer_sequence` 是 C++14 的特性,而部分项目默认使用的是 C++11 标准[^4]。 - **解决方法**: 修改 `CMakeLists.txt` 文件中的 C++ 标准选项,将其更改为支持更高版本的标准(如 C++14)。具体操作如下: ```cmake set(CMAKE_CXX_STANDARD 14) ``` #### 2. **动态链接库缺失** 当出现类似于 `LNK2019: 无法解析的外部符号` 错误时,通常是由于缺少必要的动态链接库文件引起的[^5]。 - **解决方法**: 确保所有所需的动态库已正确添加到项目的构建路径中。对于 Windows 平台上的 Visual Studio 用户来说,可以通过以下方式验证并修复: - 检查 `.dll` 和对应的 `.lib` 是否存在于指定目录下。 - 将它们复制至可执行程序所在的同一目录或系统的 PATH 路径中。 #### 3. **vcglib 配置错误** openMVS 对 vcglib 存在强依赖关系,若指定了错误的 vcglib 安装位置,则会导致一系列连锁反应式的编译异常[^3]。 - **解决方法**: 使用官方推荐的 vcglib 版本,并严格按照文档说明完成安装过程。通过命令行参数 `-DVCG_ROOT=<path_to_vcglib>` 来明确定义其实际存储地址。 #### 4. **ceres-solver 不一致** 如果自定义了 ceres-solver 库而非采用内置版本的话,那么有可能引入额外的功能需求从而引发矛盾状况。 - **解决方法**: 统一选用相同来源的 ceres-solver 实现;要么完全移除本地实例仅依靠集成版,要么调整源码使其适应当前环境下的特定接口调用形式。 综上所述,以上几点涵盖了大部分常见的 openMVS 编译难题及其对应处理措施。当然,鉴于不同用户的开发条件各异,仍可能存在其他特殊情况需要单独对待。 ```bash mkdir build && cd build cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DVCG_ROOT=/path/to/vcglib \ -DBUILD_SHARED_LIBS=ON make -j$(nproc) ``` 上述脚本展示了如何基于 Linux/MacOS 构建流程来生成最终产物的同时也体现了良好的实践习惯——即创建独立子目录存放中间产物以免污染原始代码树结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值