##随手记录##
核心:编译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