首页 > 编程语言 >Matlab编译32位dll(c++)

Matlab编译32位dll(c++)

时间:2022-11-15 09:56:19浏览次数:55  
标签:32 InstalledVersions c++ installed Matlab MSVC dll tc compilers

##随手记录##

核心:编译matlab核心工具链

注意:需要把 my_msvc_32bit_tc.m和myRtwTargetInfo.txt放在一个文件夹中,matlab目录文件也是转到此处

step1:获取VC版本号

方法一:在电脑安装多个VC编译器的情况下使用

installed_compilers = mex.getCompilerConfigurations('C', 'Installed');

 

MSVC_InstalledVersions = regexp({installed_compilers.Version}, '16.0');%这里指定你所需要的VC编译器版本号

MSVC_InstalledVersions = cellfun(@(a)~isempty(a), MSVC_InstalledVersions);

VersionNumbers = {installed_compilers(MSVC_InstalledVersions).Version}'; 

方法二:电脑只装了一个VC的情况

installed_compilers = mex.getCompilerConfigurations('C', 'Installed');
MSVC_InstalledVersions = regexp({installed_compilers.Name}, 'Microsoft Visual C\+\+ 20\d\d'); %获取本机所有VC编译器
MSVC_InstalledVersions = cellfun(@(a)~isempty(a), MSVC_InstalledVersions);
VersionNumbers = {installed_compilers(MSVC_InstalledVersions).Version}';


step2:注册工具链
%% 注册工具链
% 定义
tc = my_msvc_32bit_tc(VersionNumbers{end});
save my_msvc_32bit_tc tc;
% 注册
copyfile myRtwTargetInfo.txt rtwTargetInfo.m
RTW.TargetRegistry.getInstance('reset');


step3:配置并生成dll
%% 生成Dll
% 创建配置
cfg = coder.config('dll');
cfg.HardwareImplementation.ProdHWDeviceType = 'Generic->Unspecified (assume 32-bit Generic)';
cfg.Toolchain = 'Microsoft 32 Bit Toolchain | nmake makefile (64-bit Windows)'; % 使用新注册的32位工具链
cfg.Verbose = true; % 显示编译信息,便于检查是否32位编译
% 编译生成dll
codegen -config cfg yourFunction -args { ... }; %args 为函数输入的个数以及类型,比如 ,,, -args{0,0,0,0};表示输入为4个参数,并且0代表着是double类型。

##若是不想用了可以删除配置链##
%% 可选: 注销工具链
delete ./rtwTargetInfo.m
RTW.TargetRegistry.getInstance('reset');
 
 


 

标签:32,InstalledVersions,c++,installed,Matlab,MSVC,dll,tc,compilers
From: https://www.cnblogs.com/Lvdabai-Lvshen/p/16891416.html

相关文章

  • 用C/C++开发工业软件适合吗?
    用C/C++开发工业软件最适合的了,这是因为C/C++是仅次于汇编语言的最底层程序开发语言;同时工业软件最大的特征就是专业性强、复杂度高,需要相当深的专业知识、经验、科研基......
  • c++ 函数指针
    函数指针是指向函数的指针。指针的类型由它的返回类型和形参类型共同决定。例如bool(*Pf)(conststring&,conststring&);pf指向一个函数,函数的参数是两个string......
  • windwos cmake与c++的使用教程
    1概述欢迎指正......
  • c++基础2
    模板c++另一种编程思想称为泛型编程,主要利用的技术就是模板c++提供两种模板机制:函数模板和类模板函数模板建立一个通用函数,函数的返回值类型和形参类型可以不具体指......
  • 基于matlab的卫星网络DCAR编码感知路由发现仿真
    FPGA教程目录MATLAB教程目录一、理论基础当一个源节点有数据要向目的节点发送且在当前路由缓存中未发现可用路径时,则启动路由请求过程,下面分步对该过程进行说明:步骤1:......
  • C++软件编码规范推荐--Qt相关
    1背景  Qt开发常用于跨平台开发的首选,所以关于Qt开发的编码规范也很重要。2QWidget  【规范】信号命名:sgl+驼峰命名规则,如:sglUpdate();  【规范】槽函数:on+驼峰......
  • C++初阶(命名空间+缺省参数+const总结+引用总结+内联函数+auto关键字)
    命名空间概述在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的......
  • c++中尽量用const,enum,inline替换#define
    一般声明在头文件,注意:在class中声明常量通常要加static例:classA {public:staticconstinta=0;} 对于单纯的常量,最好以const或enums替换#define......
  • MATLAB使用手记(二):FFT示例
    代码%采样参数T=10;%采样时间N=100;%采样次数F_sample=N/T;%采样频率%被采样信号pi=3.14;f=1; ......
  • C++软件编码规范推荐--命名规则
    1.背景  命名规则对于代码开发和理解很重要,是作为一名合格的设计师具备的良好代码习惯。2.命名规则2.1匈牙利命名法  基本原则:变量名=属性+类型+对象描述......