在VS2010中调用MATLAB生成的DLL

最近需要制作一个C的插件,需要使用MATLAB代码,所以想通过C语言调用MATLAB的动态链接库实现。以下实现过程参考了MATLAB的help~

编译环境:MATLAB2014a、Visual Studio2010

  1. 首先,在MATLAB中新建一个.m文件,命名为dll_test.m并保存,内容如下:
    function c = dll_test(a)  %#codegen
        c = sqrt(a);
    end
  2. 使用codegen命令生成DLL:

    这里先简单介绍一下codegen命令:

      • codegen命令用于从MATLAB代码获取C/C++代码,常见的两种命令格式:
        codegen options file file1_name args...filen_name args
        codegen project_name
        其中第一种用于处理文件,第二种用于处理工程;参数args表示示例输入,并不进行真正的参数传递;参数files是生成C/C++时需要包含的文件(.c/.cpp/.h/.obj/.lib/.tmf);options规定了生成的目标代码类型(dll/exe/lib/mex),命令为-config:dll(其他类似),具体命令解析可以在MATLAB命令行输入help codegen查看;
    • 将当前路径更改为.m文件的保存路径,然后在命令行中输入以下命令:
    • codegen -report -config:dll dll_test -args {0}
      其中-report可以产生一份生成状态的报告:生成成功后的文件或错误报告;生成错误的话,重选路径,注意args与参数{0}之间有空格,多个参数空格分隔;在VS2010中调用MATLAB生成的DLL_第1张图片
  3. 上一步成功之后在目录./codegen/dll/dll_test下可以看到生成的所有文件。在VS2010下新建一个控制台工程,将之前生成的依赖文件dll_test.dll拷贝到工程目录下,并且添加一个c/c++文件到工程中,内容如下:
    #include "dll_test.h"
    #include "dll_test_initialize.h"
    #include "dll_test_terminate.h"
    #include 
    
    int main()
    {
    	dll_test_initialize();
    	printf("%f\n", dll_test(25));
    	dll_test_terminate();
    	//gerchar();
    	return 0;
    }
    • VS默认配置是Win32 Debug模式,根据你之前生成的DLL,选择win32 Release还是x64 Release;
    • 选中VS项目,右键->属性,选择C/C++ ->常规->附加包含目录,添加目录 ./codegen/dll/dll_test;选择链接器->常规->附加库目录,添加路径同上;选择链接器->输入->附加依赖项,将dll_test.lib加入;确定;
    • VS配置完成,完美运行~

你可能感兴趣的:(Matlab,C/C++)