记:解决Matlab R2014a与VS2017混编问题

一、安装问题

可能之前不小心删除了.net framework 4.0,在安装window sdk7.1 和 .NET Framework 4时总出现一个错误提示

Some Windows SDK components require the RTM .NET Framework 4. Setup detected a pre-release version of .NET Framework 4. If you continue with Setup, these components will not be installed. If you want to install these components, click Cancel, then install the .NET Framework 4 fromhttps://go.microsoft.com/fwlink/?LinkID=187668 and then rerun Setup.

Click OK to continue.

点击OK,一点都不OK,哪里来的pre-release version of .NET Framework4.

原来在win10 64bit系统中,仍需要修改2个注册entry:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full\Version
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Client\Version

找到它们,

记:解决Matlab R2014a与VS2017混编问题_第1张图片

将Client和Full这两个的Version的值由4.6.01586(需要记住)改为4.0.30319用以欺骗安装(包括子文件夹下也要修改),这个修改需要权限。

原因是Win10系统默认已经集成.net framework 4.6 理论上是向下兼容的,所以我们无需再安装.net framework 4.0,即便是安装也是无法完成的。
如果你有运行一些软件一定需要.net framework 4.0,可以尝试在Win10系统的“启用或关闭windows功能中”取消勾选.net framework 4.6后再安装。
或是可以通过修改注册表.net framework版本号的方法来欺骗一下软件。
步骤:
微软徽标键Win+R 输入regedit打开注册表。
找到位置 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client
您需要的Net Framework 4.0的完整版本号是4.0.30319.1。
可以尝试将此数值更改为需要的版本号。注意修改注册表需要权限。

权限修改可以参考这个,https://jingyan.baidu.com/article/215817f79d86cf1eda142308.html 与之类似只需要稍微变通修改就行了。将HKEY_CURRENT_USER换为 HKEY_LOCAL_MACHINE就行了。

http://www.xitongcheng.com/jiaocheng/win10_article_11581.html 关键是找到自己电脑的名称。

    具体方法:

  1、在运行对话框中输入:regedit,点击确定或按回车键(Enter),打开注册表编辑器,在注册表编辑器窗口,左键单击:HKEY_CURRENT_USER,再点击:编辑 - 权限;

记:解决Matlab R2014a与VS2017混编问题_第2张图片

  2、此时,打开了HKEY_CURRENT_USER的权限对话框,在这个对话框中,先查看本机登录的用户名,如组或用户名(G)栏中没有,点击:高级选项;

记:解决Matlab R2014a与VS2017混编问题_第3张图片

  3、在打开的HKEY_CURRENT_USER的高级安全设置窗口,点击:添加;

记:解决Matlab R2014a与VS2017混编问题_第4张图片

  4、在HKEY_CURRENT_USER的高级安全设置窗口,点击添加以后,就会打开

  HKEY_CURRENT_USER的权限项目窗口,在这个窗口中,基本权限项都呈灰色状态不可选择,点击:选择主体;

记:解决Matlab R2014a与VS2017混编问题_第5张图片

  5、在打开的选择用户和组对话框中,点击:高级;

记:解决Matlab R2014a与VS2017混编问题_第6张图片

  6、按下来,在对话框中点击:立即查找(N);在搜索结果(U)栏中用鼠标按住右侧的小滑块向下拖动,找到本机登录的用户名如:GONG ZOU,并左键单击用户名,再点击:确定;

记:解决Matlab R2014a与VS2017混编问题_第7张图片

  7、点击确定以后,可以看到本机登录用户名显示在检查名称栏中,点击:确定;

记:解决Matlab R2014a与VS2017混编问题_第8张图片

  8、这时就会回到HKEY_CURRENT_USER的高级安全设置窗口,在这个窗口,点击:显示高级权限;在HKEY_CURRENT_USER的权限项目窗口的高级权限下,点击完全控制,再点击确定;

记:解决Matlab R2014a与VS2017混编问题_第9张图片

  9、回到HKEY_CURRENT_USER的高级安全设置窗口,点击:应用 - 确定;

记:解决Matlab R2014a与VS2017混编问题_第10张图片

  10、回到HKEY_CURRENT_USER的权限窗口,点击:确定,退出注册表编辑器。

记:解决Matlab R2014a与VS2017混编问题_第11张图片

  以上就是Windows10系统修改注册表权限的具体方法介绍了。我们在把注册表权限改为完全控制后,就可以让注册表取得最高权限啦。有需要的用户,不妨按照系统城小编的方法操作看看吧!

保存修改后就有权限修改了,修改了也就可以顺利安装了。

最后,再返回这里,改回原来的值。

类似的我也参考过这个资料:https://blog.csdn.net/yiyungent/article/details/80370955 可以看看。

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意!!!!!!!!!!!!!!!

MATLAB (版本2014a)制作执行文件遇到问题 “Test checkout of feature 'Compiler' failed”时可以进行如下操作解决。

适用于已安装compiler但破解不完全的,

链接: http://pan.baidu.com/s/1qYLFgPA 密码: wei7

下载后解压,把install.jar以及相应位数的三个文件(compiler.dll,mcc.exe,libmwservices.dll)复制到对应位置替换即可,另外把license.lic改为与MATLAB\licenses文件夹下的那个lic文件同名,复制并替换之。

二、实际测试

  • 新建脚本文件:如add.m,然后保存,记得保存目录一会用到。

      function [c] = add(a, b)

       c = a + b;

  •  

    Matlab下配置编译器和生成C文件

    打开matlabR2014a,在命令行窗口输入 
    mex -setup C++ 
    mex -setup C++ -client MBUILD 
    配置好编译器,如果出现如下语句,证明配置好了

     

    MEX 配置为使用 'Microsoft Visual C++ 2010' 以进行 C++ 语言编译。
    MBUILD 配置为使用 'Microsoft Visual C++ 2010 (C)' 以进行 C 语言编译。

    然后再命令行窗口输入deploytool,出现如下窗口,选择Library Compiler 
    记:解决Matlab R2014a与VS2017混编问题_第12张图片 
    然后再如下窗口中 
    记:解决Matlab R2014a与VS2017混编问题_第13张图片
    左上方选择C++ Shared Library,点击+号,将自己需要编译的.m文件选中,在Library Name那里给动态库写好名字,然后点击package。等待后编译完成,如图。 
    记:解决Matlab R2014a与VS2017混编问题_第14张图片 
    然后可以找到如下图所示的.dll, .h, .lib 
    记:解决Matlab R2014a与VS2017混编问题_第15张图片

  • 注意代码编译为:保存在Matlab的默认路径:C:\Users\Administrator\Documents\MATLAB;然后在命令行输入:mcc -W cpplib:add -T link:lib add.m –C(这里每个减号前同样要加空格)并回车,等待一分钟左右显示MEX已成功完成。其中 add.m 就是上面的测试程序。命令mcc -W cpplib:add -T link:lib add.m –C 中的cpplib:add 这个add自己可以随意修改,之后会生成add.lib, add.h, add.dll。

        记:解决Matlab R2014a与VS2017混编问题_第16张图片

 

  • 接下里在VS2017中配置以调用Matlab文件

      可以参考该篇文章https://jingyan.baidu.com/article/e75aca8562d06b142fdac66d.html

       1.配置环境变量:右键电脑->属性->高级系统设置->环境变量->系统变量,在Path中添加 
                            Matlab2014a安装路径\bin\win64 
                            Matlab2014a安装路径polyspace\bin 
                             如果有的话就不用添加。 

 

 

        2. 新建Win32控制台程序test,将add.h,add.lib,add.dll文件放到程序目录下。

            记:解决Matlab R2014a与VS2017混编问题_第17张图片

       3. 项目-test属性-配置属性-连接器-输入-附加依赖项。添加以下

libeng.lib
libmat.lib
libmex.lib
libmx.lib
mclmcrrt.lib
mclmcr.lib
add.lib

记:解决Matlab R2014a与VS2017混编问题_第18张图片

       4.设置VC++目录,右键vs工程->属性->vc++目录中的包含文件中加入Matlab2014a安装路径\extern\include 
           库目录添加:  Matlab2014a安装路径\extern\lib\win64\microsoft 
          记:解决Matlab R2014a与VS2017混编问题_第19张图片

      5.  把 add.h文件添加到头文件中,add.dll,add.lib文件添加到资源文件中

            记:解决Matlab R2014a与VS2017混编问题_第20张图片

  1.  

         6.设置调试模式为debug X64。点击debug的三角形按钮显示配置管理器,将平台设置为x64

            记:解决Matlab R2014a与VS2017混编问题_第21张图片

        7.在test.cpp中添加以下代码


#include "add.h"
#include 
using namespace std;
 
int main()
{
	if(addInitialize())    //初始化,这一步是必须的
	{
		cout<<"success!!!"<

运行输出结果,配置完成。

        success!!!
8 12 16
10 14 18
it is successful !
请按任意键继续. . .

 

你可能感兴趣的:(记:解决Matlab R2014a与VS2017混编问题)