Does MATLAB compiler require prototype file instead of header file ?
Mostrar comentarios más antiguos
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 ?
Respuestas (1)
Kojiro Saito
el 18 de Dic. de 2019
Editada: Kojiro Saito
el 18 de Dic. de 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 comentarios
Nhat Khang Truong Khanh
el 18 de Dic. de 2019
Kojiro Saito
el 18 de Dic. de 2019
Yes, that's right.
Nhat Khang Truong Khanh
el 18 de Dic. de 2019
Kojiro Saito
el 18 de Dic. de 2019
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
el 18 de Dic. de 2019
Kojiro Saito
el 18 de Dic. de 2019
From File Explorer, go to Properties of the folder and confirm your current user account has Write permission.
Nhat Khang Truong Khanh
el 19 de Dic. de 2019
Editada: Nhat Khang Truong Khanh
el 19 de Dic. de 2019
Kojiro Saito
el 19 de Dic. de 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
el 2 de Jun. de 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 ! .
Categorías
Más información sobre C Shared Library Integration en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!