【问题标题】:Call a generated .dll file from codegen matlab in c program在 c 程序中从 codegen matlab 调用生成的 .dll 文件
【发布时间】:2018-01-28 15:50:17
【问题描述】:

我在MATLAB R2016b中使用codegen生成.dll文件如下:

codegen -config:dll ex_fun.m -args {0,0,0,0,0,0}

我尝试使用 Visual Studio 2015 将 dll 文件作为参考包含在内,但没有任何效果,我也无法将 .lib 文件用作链接器。

奇怪的是,我可以很容易地在 Linux 上使用gcc,方法是编译调用 C 函数的 .c 脚本以及输出 .so 文件(相当于 windows 中的 .dll)如下:

gcc main.c ex_fun.so -Wl,-rpath=$(pwd)

但是,我在 Windows 中找不到任何直接方法。如何在 C 主脚本程序中使用和调用 MATLAB 输出的 .dll 文件?

需要注意的是,还会生成一个.def文件,但我不知道如何将它与输出的dll文件一起使用。

【问题讨论】:

    标签: c matlab dll codegen


    【解决方案1】:

    在 Visual Studio IDE 中:

    • 将平台切换到“x64”

    在项目属性中:

    • C++>常规>其他包含目录 = ^添加编译文件夹。

    • 链接器>常规>其他库目录 = ^添加编译
      文件夹。

    • 链接器>输入>附加依赖 = "ex_fun.lib"

    • 在代码中:添加#include "ex_fun.h"
    • 编译完成后,将“ex_fun.dll”复制到输出文件夹并运行。

    【讨论】:

    • 我已经尝试了您建议的步骤。但是,我收到此错误消息: LNK1190 invalid fixup found, type 0x0014 ex_fun C:\Users\LAB\Desktop\test_ex_fun\ex_fun\ex_fun\ex_fun.lib(ex_fun.obj)
    • 对了,我用的是visual studio 2015
    • 没有。对于 32 位平台,我宁愿对所有 .h 文件都出现此错误:LNK2019 unresolved external symbol _ex_fun
    • 我收到此警告:LNK4272 库机器类型“x64”与目标机器类型“X86”冲突
    • 顺便说一句,我正在跟进此链接中的步骤:mathworks.com/help/coder/ug/…。但是,如前所述,我遇到了 LNK1190 的错误。希望对你有帮助
    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    相关资源
    最近更新 更多