Does MATLAB compiler require prototype file instead of header file ?

13 vues (au cours des 30 derniers jours)
Nhat Khang Truong Khanh
Nhat Khang Truong Khanh le 18 Déc 2019
Commenté : Pravin Mali le 2 Juin 2022
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 ?

Réponses (1)

Kojiro Saito
Kojiro Saito le 18 Déc 2019
Modifié(e) : Kojiro Saito le 18 Déc 2019
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 commentaires
Kojiro Saito
Kojiro Saito le 19 Déc 2019
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
Pravin Mali le 2 Juin 2022
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 ! .

Connectez-vous pour commenter.

Catégories

En savoir plus sur C Shared Library Integration dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by