Matlab中生成的Dll在C中

时间:2014-12-15 14:15:36

标签: c matlab dll matlab-compiler matlab-coder

我使用这个命令在Matlab中创建了一个简单函数的dll:

mcc -t -L C -W lib:testfunctionLib -T link:lib testfunction.m libmmfile.mlib

简单的功能如下:

function y = testfunction(x) 
y = x + 10;
end

我需要通过c代码调用dll。这就是我用来将dll-function的计算结果输入到文本文件中的原因:

#include <windows.h>
#include <stdio.h>

int main()
{
    int z = 1;
    FILE *Testfile;

    typedef int(*BinaryFunction_t) (int);
    BinaryFunction_t  AddNumbers;
    int            result;
    BOOL              fFreeResult;
    HINSTANCE         hinstLib = LoadLibraryA("testfunctionLib.dll");

if (hinstLib != NULL)
    {
    AddNumbers = (BinaryFunction_t)GetProcAddress(hinstLib, "testfunction");

    if (AddNumbers != NULL)
        result = (*AddNumbers) (z);

    fFreeResult = FreeLibrary(hinstLib);

    Testfile = fopen("Testfile.txt", "a");
    fprintf(Testfile, "%i\n", result);
    fclose(Testfile);
    }
else
    {
    Testfile = fopen("Testfile.txt", "a");
    fprintf(Testfile, "NOT");
    fclose(Testfile);
    }
}

我总是在我的文本文件中得到'NOT',因为c代码无法从dll中提取函数。为什么这不起作用?获取dll函数的c代码应该没问题,我用visual studio中创建的dll测试它。

1 个答案:

答案 0 :(得分:1)

我知道库无法加载,但我没有收到任何错误消息..我也尝试用Matlab编码器构建dll。我得到了很多不同的文件(c,h等)和一个名为testfunction的dll文件。但包括这个dll仍然无法正常工作..