【VS+opencv】使用VS将cpp文件编译为mexw64/32文件


话说Matlab和VS的联合编译真的让人头大…
顺带提一句,此方法VS任何版本都适用,或者说是:cpp文件编译为mexw64文件是不用关心VS和Matlab版本号的,毕竟cpp可以理解为只是一个文本文件···



1.简介

主要是别人提供的是一个cpp文件,然后最后要用Matlab编译,其中cpp文件使用到了opencv版本是2.4.9,我这里找到的2.4.9的最高只支持到VS2013,所以这次就是用的VS2013来配的。其他版本操作和本例是一样的。
博主本文的编译环境:VS2013、Matlab R2015b、Opencv2.4.9


2.配置VS属性表

是的…第一步还是配置属性表…(我这里就默认你们已经有要编译的cpp文件了)

2.1 新建工程

新建一个空项目
在这里插入图片描述
这里应用程序类型选择DLL,忘了选的话后面也可以选。
在这里插入图片描述

2.2 添加相关文件

添加头文件test.h和源文件test.cpp,建议就用这两个名字,因为后面要用。
在这里插入图片描述
然后在新建一个test.def文件,在这里:
在这里插入图片描述
在这里插入图片描述
重申:建议名字不要改

2.3 写入代码

2.3.1 test.h

test.h文件中写入:

#pragma once
#include "matrix.h"
#include "mex.h"
#define TESTMATLAB_EXPORTS
#ifdef TESTMATLAB_EXPORTS
#define MEX_FUNCTION_API __declspec(dllexport)
#else
#define MEX_FUNCTION_API __declspec(dllimport)
#endif
MEX_FUNCTION_API void mexFunction(int nlhs, mxArray* plhs[], int nrhs, mxArray* prhs[]);

2.3.2 test.cpp

test.cpp粘贴进你自己的cpp的代码
//
假装有图
//

2.3.3 test.def

test.def中写入:

LIBRARY    "testp"  
EXPORTS  
        mexFunction  

这个时候报错是正常,毕竟还没添加属性表…

2.4 配置属性表

2.4.1 选择编译平台

首先,将工程选择到X64(毕竟是生成mexw64文件,生成mexw32文件选择X86)
在这里插入图片描述

2.4.1 配置Matlab

老规矩,创建新的属性表:
在这里插入图片描述
在这里插入图片描述
然后双击打开。
添加包含目录:(注意自己的路径)

D:\P_Matlab\extern\include

在这里插入图片描述
添加库目录:(注意选择win64,X86的选择win32)

D:\P_Matlab\extern\lib\win64\microsoft

在这里插入图片描述
添加附加依耐项:注意看一下你的lib文件夹里面是否和我给的一样有的说只用加一两个就可以了,但是我之前报错了,所以索性就都加上,如果和我这个不一样的,参见我之前博客里面的附录2—获取自己的链接库列表传送门在此:链接: https://blog.youkuaiyun.com/weixin_41991128/article/details/83864713.

gpu.lib
libcovrt.lib
libemlrt.lib
libeng.lib
libfixedpoint.lib
libmat.lib
libmex.lib
libmwblas.lib
libmwblascompat32.lib
libmwboxfilter.lib
libmwboxfilter3.lib
libmwbwdistEDT.lib
libmwbwdistEDTFT.lib
libmwbwdistEDTFT_tbb.lib
libmwbwdistEDT_tbb.lib
libmwbwlookup.lib
libmwbwlookup_tbb.lib
libmwbwpackc.lib
libmwbwpackctbb.lib
libmwbwunpackc.lib
libmwbwunpackctbb.lib
libmwcannythresholding_tbb.lib
libmwcascadeClassifier.lib
libmwcgir_construct.lib
libmwcgxert.lib
libmwcoderassumptionsapp.lib
libmwcoderprofile.lib
libmwcoder_connectivity_comm.lib
libmwcoder_connectivity_memunit.lib
libmwcoder_ParamTuningTgtAppSvc.lib
libmwcoder_target_services.lib
libmwcoder_ToAsyncQueueTgtAppSvc.lib
libmwComputeMetric.lib
libmwddist.lib
libmwdetectBRISK.lib
libmwdetectFAST.lib
libmwdetectMser.lib
libmwdisparityBM.lib
libmwdisparitySGBM.lib
libmwedgethinning_tbb.lib
libmwextractBRISK.lib
libmwextractFreak.lib
libmwextractSurf.lib
libmwfastHessianDetector.lib
libmwfilcommon.lib
libmwforegroundDetector.lib
libmwgetnumcores.lib
libmwgrayto16.lib
libmwgrayto8.lib
libmwgrayxform.lib
libmwgrayxform_tbb.lib
libmwHOGDescriptor.lib
libmwimfilter.lib
libmwimlincomb.lib
libmwimlincomb_tbb.lib
libmwimreconstruct.lib
libmwimregionalmax.lib
libmwint16touint16.lib
libmwint32touint32.lib
libmwint8touint8.lib
libmwintlut.lib
libmwintluttbb.lib
libmwippfilter.lib
libmwippgeotrans.lib
libmwippmedianfilter.lib
libmwippreconstruct.lib
libmwlapack.lib
libmwmatchFeatures.lib
libmwmathutil.lib
libmwmorphop_binary.lib
libmwmorphop_binary_tbb.lib
libmwmorphop_flat.lib
libmwmorphop_flat_tbb.lib
libmwmorphop_ipp.lib
libmwmorphop_nonflat.lib
libmwmorphop_nonflat_tbb.lib
libmwmorphop_packed.lib
libmwocvgpumex.lib
libmwocvmex.lib
libmwopticalFlowFarneback.lib
libmwopticalFlowHSCore.lib
libmwopticalFlowLKCore.lib
libmwopticalFlowLKDoGCore.lib
libmwordfilt2.lib
libmwpointTracker.lib
libmwremap.lib
libmwremaptbb.lib
libmwrtiostreamutils.lib
libmwservices.lib
libmwsigstream.lib
libmwsimulink.lib
libmwslexec_parallel.lib
libmwslexec_simbridge.lib
libmwsl_AsyncioQueue.lib
libmwsl_fileio.lib
libmwsl_iofile.lib
libmwsl_log_load_blocks.lib
libmwsl_sfcn_cov_bridge.lib
libmwsl_solver_rtw.lib
libmwtbbhist.lib
libmwuint16toint16.lib
libmwxilcomms.lib
libmwxilcomms_rtiostream.lib
libmwxilservice.lib
libmwxilutils.lib
libmwxilutils_sl.lib
libmx.lib
libut.lib
mclbase.lib
mclcommain.lib
mclmcr.lib
mclmcrrt.lib
mclxlmain.lib
ne_mli.lib
ne_rtl.lib
ocrutils.lib
physmod_common_external_library_kernel.lib
physmod_common_foundation_core_util.lib
rtwcg.lib
sf_runtime.lib
SimulinkBlock.lib
sl_services.lib

在这里插入图片描述

2.5 *配置Opencv

注意:这里是我此次工程需要用到这个Opencv2.4.9,读者根据自己的需求配置自己.cpp中涉及使用到的包含项、库等即可,Opencv的配置详见:
链接:https://blog.youkuaiyun.com/weixin_41991128/article/details/83656543

2.6 确认相关设置

属性表配好之后还需要确定一下:
双击下图标注打开工程的属性表,检查配置类型是否为动态库
在这里插入图片描述


3.编译

点击生成解决方案
在这里插入图片描述
提示成功,然后到输出里给的路径找到刚刚生成的dll文件
在这里插入图片描述
然后直接重命名为你想要的名字,和mexw64后缀即为生成的mexw64文件了。

03-28
### MCP API 的文档与使用教程 MCP 是一种用于增强大型语言模型 (LLM) 功能的技术框架,它通过提示(Prompts)、资源(Resources)以及工具(Tools)这三种核心原语来扩展 LLM 能力[^2]。Apifox 平台也认识到 MCP 技术在 API 开发领域的重要作用,并将其应用于实际场景中[^1]。 为了实现将 `/Users/syw/project/wechatAr` 文件夹下的所有文件上传至远程服务器 `47.93.xx.xx` 用户名 `root` 下的 `/opt/ll` 目录的操作,可以基于 MCP 工具功能构建一个自定义的服务逻辑。以下是具体实现方法: #### 实现方案 利用 SCP 命令完成文件传输任务,并结合 MCP 的 Tool 功能封装此操作以便于后续调用。当关键词为“上传微信目录”时,触发该工具执行相应动作。 ```python import subprocess def upload_wechat_directory(): source_dir = "/Users/syw/project/wechatAr/*" target_server = "root@47.93.xx.xx:/opt/ll/" try: result = subprocess.run(["scp", "-r", source_dir, target_server], check=True) return {"status": "success", "message": f"All files from {source_dir} have been uploaded to {target_server}"} except Exception as e: return {"status": "error", "message": str(e)} # 将上述函数注册为 MCP 中的一个 tool tools = { "upload_wechat_directory_tool": upload_wechat_directory, } # 定义 prompt 和 resource 配置部分省略... ``` 以上代码片段展示了如何创建一个名为 `upload_wechat_directory_tool` 的工具并将其集成到 MCP 系统里去[^3]。每当接收到匹配条件的消息比如含有特定关键字的时候就会激活对应的行为即启动SCP进程从而达成目标需求。 #### 进一步学习资料推荐 对于希望深入研究或者实践更多关于 MCP 应用案例的人士来说,《MCP 教程进阶篇》提供了丰富的实例分析和技术细节值得参考阅读;另外《MCP 极简入门:超快速上手运行简单的 MCP 服务和 MCP 客户端》同样是非常好的起点材料之一可以帮助初学者迅速掌握基础概念及其运作机制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值