Does MATLAB compiler require prototype file instead of header file ?
显示 更早的评论
i use loadlibrary command to load 2 files from the SDK. Using it in Code view of App Designer:
loadlibrary('edk.dll','Iedk.h','addheader','IedkErrorCode.h','addheader','IEmoStateDLL.h','addheader','FacialExpressionDetection.h','addheader','MentalCommandDetection.h','addheader','IEmotivProfile.h','addheader','EmotivLicense.h','alias','libIEDK');
loadlibrary('edk.dll','IEmoStateDLL.h', 'alias', 'libIEmoStateDLL');
but when successfully compiled into web app, i got a log error that
Deployed applications must use a prototype file instead of a header file. To create the prototype, use the loadlibrary mfilename option.
After searching the direction, i still have no idea to change the code to prototype file. Do you have any suggestion on this ?
回答(1 个)
Kojiro Saito
2019-12-18
编辑:Kojiro Saito
2019-12-18
As described in this document, in order to use loadlibrary in deployed application converted by MATLAB Compiler, you need to use with prototype file name (loadlibrary(libname,@protofile)). And in order to create prototype files, you need to add 'mfilename' option to loadlibrary.
In MATLAB Command Window, do the following.
loadlibrary('edk.dll','Iedk.h','addheader','IedkErrorCode.h','addheader','IEmoStateDLL.h','addheader','FacialExpressionDetection.h','addheader','MentalCommandDetection.h','addheader','IEmotivProfile.h','addheader','EmotivLicense.h','alias','libIEDK', 'mfilename','testproto1');
loadlibrary('edk.dll','IEmoStateDLL.h', 'alias', 'libIEmoStateDLL', 'mfilename','testproto2');
Then, testproto1.m and testproto2.m will be created. After that, rewrite loadlibrary from prototype files in your App Designer app,
loadlibrary('edk.dll', @testproto1)
loadlibrary('edk.dll', @testproto2)
So, I suppose these loadlibrary would work in deployed applications.
9 个评论
Nhat Khang Truong Khanh
2019-12-18
Kojiro Saito
2019-12-18
Yes, that's right.
Nhat Khang Truong Khanh
2019-12-18
Kojiro Saito
2019-12-18
Do you have a write permission on the current folder?
If yes, can't you find those m files from Windows' File Explorer?
Nhat Khang Truong Khanh
2019-12-18
Kojiro Saito
2019-12-18
From File Explorer, go to Properties of the folder and confirm your current user account has Write permission.
Nhat Khang Truong Khanh
2019-12-19
编辑:Nhat Khang Truong Khanh
2019-12-19
Kojiro Saito
2019-12-19
Does loadlibrary with edk.dll works in your MATLAB code before compiling it as standalone application?
Also, edk.dll is not a library created by MATLAB Compiler SDK (Library Compiler)?
I'm asking because loadlibrary has the following limitation.
loadlibrary does not support libraries generated by the MATLAB Compiler SDK™ product.
Pravin Mali
2022-6-2
I have a driver which uses ANVNADriver.m as main file and for functioning it uses c libraries .
How to generate a prototype file of ANVNADriver.m
Plz help ! .
类别
在 帮助中心 和 File Exchange 中查找有关 C Shared Library Integration 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!