使用调用外部函数的函数加载由 MATLAB Coder 生成的 DLL

Posted

技术标签:

【中文标题】使用调用外部函数的函数加载由 MATLAB Coder 生成的 DLL【英文标题】:Loading DLL generated by MATLAB Coder with function, that calls outer functions 【发布时间】:2018-09-19 09:27:32 【问题描述】:

我有一个由 MATLAB Coder 生成的 DLL 文件,其中包含函数 Adjust。这个函数需要很少的外部函数,用外部 .m 文件编写,例如 PulseFindAdapt:

function [Indexes,NoiseLogBinary,NoiseThreshold]=Adjust(NoiseLog,NoiseTime,MedianLong)%значения аргументов

NoiseLog = NoiseLog/8192;
NoiseLog=NoiseLog-my_medFilt(NoiseLog,MedianLong);
mean = 45;

[Indexes,NoiseLogBinary,NoiseThreshold]=PulseFindAdapt(NoiseLog,NoiseTime,mean,7);
end

当我尝试使用 QLibrary 加载生成的 Adjust.dll 文件时,出现以下错误:

"Cannot load library Adjust.dll: the specified module could not be found"

在这里我找到了一个建议,问题可能是加载一个 .dll 依赖项(最后一篇文章):

Problem with dependencies

我尝试加载其他 .dll 文件,只包含一个没有依赖项的函数,并且它有效,所以问题不在于使用 QLibrary;还尝试包含头文件并将 .cpp 文件与生成的函数代码链接(例如 PulseFindAdapt),但它不起作用。对如何加载和使用此类 .dll 有何建议?

将不胜感激!

【问题讨论】:

您是否尝试过使用DependencyWalker dependencywalker.com 来查看Adjust.dll 的依赖关系? 谢谢你的回答!是的,这确实是依赖问题。我缺少libiomp5md.dll。另外,我的同事建议我使用静态链接而不是动态链接,这有助于我在执行应用程序之前修复链接错误。 如果它对你有帮助,我发布了一个答案,不要犹豫,支持并接受。谢谢 【参考方案1】:

对于有关链接错误的所有问题,请不要犹豫使用 DependencyWalker www.dependencywalker.com。

它会给出依赖和函数

【讨论】:

以上是关于使用调用外部函数的函数加载由 MATLAB Coder 生成的 DLL的主要内容,如果未能解决你的问题,请参考以下文章

python调用matlab函数

通过外部应用程序调用函数而不打开 Matlab 的新实例

matlab怎么调用函数

如何在从 Matlab 调用的 mex 函数中使用 Matlab 引擎

从由外部脚本生成的元素中删除 DOM 元素

怎样在C#中调用DLL中的函数,最好有代码和详细说明