2

我使用以下命令在 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 函数的计算结果转换为文本文件的方法:

#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 对其进行了测试。

4

1 回答 1

1

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

于 2014-12-19T16:25:53.443 回答