cmake导致模块计算机类型“X86”与目标计算机类型“X64”冲突

cmake问题
模块计算机类型“X64”与目标计算机类型“X86”冲突的解决方法
这一种情况
1确认cmake生成的是32位还是64位,初次建立cmake的话是可以选择项目生成的位数,非常重要
2确定编译器选择的平台,保证与项目生成的位数是一致。
3还有问题的话,可以修改
在这里插入图片描述

### 如何在MATLAB中配置MinGW以编译OpenCV #### 安装MinGW 对于希望利用MATLAB进行基于C++的开发工作,特别是涉及到像OpenCV这样的计算机视觉库时,安装一个合适的工具链至关重要。MinGW(Minimalist GNU for Windows)是一个用于Windows平台上的GNU命令行工具集合,它允许开发者编写和调试本地Windows应用程序而不需要依赖微软Visual C++运行库。 要开始设置过程,在MATLAB环境中集成MinGW作为外部编译器之前,需先完成其独立安装: 1. 访问 MinGW官方网站 或者通过其他可靠渠道获取最新版MinGW发行包; 2. 运行安装向导,选择适合系统的架构(x86/x64),并确保勾选`gcc-core`, `gcc-g++`, 和 `mingw32-make`组件以便支持C/C++项目构建; 3. 将MinGW/bin目录添加至系统PATH环境变量中,使得可以在任意位置调用GCC编译器及其关联工具; 以上步骤完成后即完成了MinGW的基础搭建[^1]。 #### 设置MATLAB识别MinGW 为了让MATLAB能够正确找到已安装好的MinGW,并将其设为默认使用的C/C++编译器之一,执行如下操作: - 启动MATLAB应用软件; - 输入命令`mex -setup c++`启动交互式的MEX文件生成器配置流程; - 当提示选择可用的编译器列表时,输入对应于新安装MinGW选项编号来指定使用此款开源编译套件; - 如果一切顺利的话,MATLAB将会确认所做更改并将MinGW加入到受支持的语言处理器行列之中; 此时已经成功让MATLAB认识到了MinGW的存在,接下来就可以着手准备引入第三方库如OpenCV了[^2]。 #### 获取解压OpenCV源码或预编译二进制文件 考虑到效率问题,建议优先考虑采用官方发布的适用于Windows平台下的静态/动态链接库形式分发版本而非自行从头编译整个工程。前往[OpenCV Releases](https://github.com/opencv/opencv/releases)页面下载目标版本压缩包后按照指示说明展开至自定义路径下即可[^3]。 #### 构建CMakeLists.txt及调整参数适配MinGW+MATLAB组合 由于MATLAB本身并不直接提供图形界面化的IDE特性,因此推荐借助第三方跨平台自动化构建管理工具——CMake辅助完成后续环节中的复杂任务。创建一个新的文本文件命名为`CMakeLists.txt`,编辑其中的内容使其符合个人需求的同时也要注意兼容性考量因素,比如指明期望产出的目标类型(`SHARED` vs `STATIC`)、包含哪些模块等功能开关设定等细节之处。特别需要注意的是,当针对MinGW环境下作业时应适当修改某些特定标志位以规避潜在冲突风险,例如关闭多线程优化选项(-jN)[^4]。 ```cmake # CMake最低版本要求 cmake_minimum_required(VERSION 3.10) # 工程名称 project(MyOpencvProject) # 查找OpenCV根目录 set(OPENCV_DIR "path/to/your/opencv/build") find_package(OpenCV REQUIRED core highgui imgproc) add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS}) ``` #### 测试验证 最后一步便是检验上述一系列准备工作是否达到预期效果。可以尝试编写一段简单的测试代码保存成`.cpp`扩展名结尾的形式,再回到MATLAB内部运用刚刚选定过的MinGW+CMake方案对其进行编译处理。如果没有任何报错信息弹出,则证明整个链条都处于正常运作状态之下。 ```cpp #include <iostream> #include <opencv2/opencv.hpp> int main() { cv::Mat image; image = cv::imread("example.jpg"); if(image.empty()){ std::cout << "Could not open or find the image!" << std::endl ; return -1; } cv::namedWindow("Display window", cv::WINDOW_AUTOSIZE); cv::imshow("Display window", image); cv::waitKey(0); // Wait indefinitely until a key is pressed. return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值