在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}之间有空格,多个参数空格分隔;
  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 <stdio.h>
    
    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配置完成,完美运行~
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neil-

你们的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值