我使用以下命令在 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 对其进行了测试。