MATLAB R2012a visual studio2010
步骤如下 :
1.编写 test_func.m
function test_funcx=0:pi/50:2*pi;
y=sin(x);
plot(x,y);
grid;
end
2.在matlab中运行 mcc -W lib:dlltest -T link:lib test_func.m 生成dll
3.在VS2010中新建一个名为test10基于对话框的工程,在工程中添加一个名为"测试"的button按钮。将dlltest.h 、dlltest.lib和dlltest.dll文件拷贝到当前工程目录下。
4.双击button1,编写如下代码
void Ctest10Dlg::OnBnClickedButton1()
{
dlltestInitialize();
mlfTest_func();
dlltestTerminate();
}
编译出现错误:
错误1error LNK2019: 无法解析的外部符号 _dlltestTerminate,该符号在函数 "public: void __thiscall Ctest10Dlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@Ctest10Dlg@@QAEXXZ) 中被引用E:\程序\vc\test\test10\test10\test10Dlg.objtest10
错误2error LNK2019: 无法解析的外部符号 _mlfTest_func,该符号在函数 "public: void __thiscall Ctest10Dlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@Ctest10Dlg@@QAEXXZ) 中被引用E:\程序\vc\test\test10\test10\test10Dlg.objtest10
错误3error LNK2019: 无法解析的外部符号 _dlltestInitialize,该符号在函数 "public: void __thiscall Ctest10Dlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@Ctest10Dlg@@QAEXXZ) 中被引用E:\程序\vc\test\test10\test10\test10Dlg.objtest10
错误4error LNK1120: 3 个无法解析的外部命令E:\程序\vc\test\test10\Debug\test10.exe11test10
5IntelliSense: #error 指令: Please use the /MD switch for _AFXDLL buildse:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxver_.h813
编程

解决方案 »

  1.   

    通过使用C/C++与Matlab混合编程,既可以享受到C代码快速执行的速度,又可以方便的使用Matlab众多的库函数和强大的绘图功能。让 Matlab调用C函数是通过DLL文件实现的,而这个DLL的开发过程不仅仅可以使用Matlab自带的mex命令,还可以使用VC++开发环境,使用 VC有很多好处,一是让我回到了原来熟悉的开发环境中,二能够使用更加标准的C++编译器,第三点也是最爽的,可以使用VC强大的调试功能。
    这里我分四个步骤讲解一个简单的开发过程,使用的Matlab版本为Matlab R2008a,VC版本为Visual C++ 2008 Express版本。步骤一、新建一个空的dll程序步骤二、为matlab函数提供头文件和静态库的支持要让众多的Matlab接口函数能够运行起来,就必须给它们提供头文件和静态库的支持,为了避免每个项目都做这些添加工作,我们可以在Tools|Options|VC++ Directories下将头文件和静态库的目录添加进去,如图:在Include files中添加”$matlab dir\extern\include”和”$matlab dir\extern\include\win32”,在Library files中添加”$matlab dir\extern\lib\win32\microsoft”。在项目属性中,让链接器链接libmx.lib、libmat.lib和libmex.lib,如图:在Preprocessor Definitions中添加MATLAB_MEX_FILE的宏定义。在Project|xx Project Properties|C/C++|Preprocessor中设置,如下图:现在写一个hello world程序就可以编译通过,如:
    http://sxnuwhui.blog.163.com/blog/static/13706837320124282524436/
      

  2.   

    工程中需要添加dlltest.lib的linker