使用调用外部函数的函数加载由 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的主要内容,如果未能解决你的问题,请参考以下文章