如何用matlab调用VS15创建的.exe文件(C语言编写)

如何用matlab调用VS15创建的.exe文件(C语言编写)

Step 1.编写C代码

  • 主函数格式:int main(int argc, char *argv[])
    • 若想从外部向main函数传递参数,该格式是固定的
    • int argc 表示传入参数的个数
    • char *argv[] 传入参数的内容,注意传入的是字符类型,使用时需要将字符串进行转换。
    • 使用VS创建解决方案,生成.exe
#pragma warning(disable:4996)
#pragma once
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

int main(int argc, char *argv[])
{
	int CAL1_statistics, CAL2_statistics, Find_ref_sig_statistics;
	int sub_tdl_num, sub_tdl_length, tdl_length;
	int system_period;
	for (i = 0; i < argc; i++)
	{
		switch (i)
		{
			case 1: 
				system_period = atoi(argv[i]);
				printf("[OUTPUT] The %d th input paramter system_period  is %d!\n", i, system_period);
				break;
			case 2: 
				sub_tdl_num = atoi(argv[i]);
				printf("[OUTPUT] The %d th input paramter sub_tdl_num is %d!\n", i, sub_tdl_num);
				break;
			case 3: 
				sub_tdl_length = atoi(argv[i]);
				printf("[OUTPUT] The %d th input paramter sub_tdl_length is %d!\n", i, sub_tdl_length);
				break;
			case 4: 
				Find_ref_sig_statistics = atoi(argv[i]);
				printf("[OUTPUT] The %d th input paramter Find_ref_sig_statistics is %d!\n", i, Find_ref_sig_statistics);
				break;
			case 5: 
				CAL1_statistics = atoi(argv[i]);
				printf("[OUTPUT] The %d th input paramter CAL1_statistics is %d!\n", i, CAL1_statistics);
				break;
			case 6:
				CAL2_statistics = atoi(argv[i]);
				printf("[OUTPUT] The %d th input paramter CAL2_statistics is %d!\n", i, CAL2_statistics);
				break;
		default:
			break;
		}
		//printf("[OUTPUT] The %d th input paramter is %s!\n", i,argv[i]);
	}
	return 0;
}

Step 2.matlab调用.exe

  • system(command)等效于在windows命令行【调用"运行"(快捷键Ctrl+R)】里执行command
  • 注意在传入参数的时候是以字符传入的,各个参数(字符)需要以空格分隔开
  • 本例中,传入参数的个数为7,其中第1个参数(0 th)是Order_confirm.exe,没打印
clc;
clear;

system_period = 2500;
sub_tdl_num = 4;
sub_tdl_length = 95;
Find_ref_sig_statistics = 2000;
CAL1_statistics = 10000;
CAL2_statistics = 2000;

tic;
op = 'Order_confirm.exe ';
cmd = [op num2str(system_period) ' ' num2str(sub_tdl_num)...
    ' ' num2str(sub_tdl_length) ' ' num2str(Find_ref_sig_statistics)...
    ' ' num2str(CAL1_statistics) ' ' num2str(CAL2_statistics)];

system(cmd);
tim = toc;
fprintf('OC is done,spent %d ms\n',round(tim*1000));
  • matlab窗口输出:
    在这里插入图片描述
    • 经实验,使用matlab传参至C产生的exe文件,实现相同功能执行效率大概是matlab的2倍

附录:C中字符串转数据的函数

函数功能
atof()将字符串转换为双精度浮点型值
atoi()将字符串转换为整型值
atol()将字符串转换为长整型值
strtod()将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字
strtol()将字符串转换为长整值,并报告不能被转换的所有剩余数字
strtoul()将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字

参考:
https://blog.csdn.net/Eastmount/article/details/20413773
https://download.csdn.net/download/qq_43445577/13081846

ilruntimedebugger_vs15_17_19 是一个软件或工具的名称,它指的是用于调试和分析程序运行时错误的 Visual Studio 的插件或组件。 Visual Studio 是一款功能强大的集成开发环境(IDE),被广泛应用于软件开发和调试过程中。ilruntimedebugger_vs15_17_19 是为 Visual Studio 15、Visual Studio 17 和 Visual Studio 19 版本开发的运行时调试器。 运行时调试器是软件开发过程中常用的工具之一,它可以在程序运行时监视变量的值、查看堆栈跟踪、观察代码执行过程、找出程序中的错误等。ilruntimedebugger_vs15_17_19 提供了与运行时调试器相关的功能和界面,使开发人员能够更加方便地调试和分析他们的程序。 ilruntimedebugger_vs15_17_19 可能会在以下场景中发挥作用: 1. 在开发过程中,当程序运行出现异常或错误时,ilruntimedebugger_vs15_17_19 可以帮助开发人员定位问题,并提供相关的调试信息,帮助快速修复错误。 2. ilruntimedebugger_vs15_17_19 还可以用于性能分析,它可以帮助开发人员找出程序中的性能瓶颈和优化点,提升程序的执行效率。 3. 对于在 Visual Studio 15、Visual Studio 17 和 Visual Studio 19 上开发的项目,使用 ilruntimedebugger_vs15_17_19 可以保持代码一致性,同时在不同版本的 Visual Studio 上进行调试和分析。 总之,ilruntimedebugger_vs15_17_19 是 Visual Studio 的一个插件或组件,提供了运行时调试和分析程序错误的功能,帮助开发人员更加高效地开发和调试他们的程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arist9612

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值