我使用这个命令在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测试它。
答案 0 :(得分:1)
我知道库无法加载,但我没有收到任何错误消息..我也尝试用Matlab编码器构建dll。我得到了很多不同的文件(c,h等)和一个名为testfunction的dll文件。但包括这个dll仍然无法正常工作..