How to call a .p file from another location in a deployed application
조회 수: 3 (최근 30일)
이전 댓글 표시
I have a MATLAB code deployed as an exe application using Compiler. In that MATLAB code, I would like to call and execute a .p file which is located in some other folder location. Is there a suitable way to do it ? I read that addpath cannot be used in deployed applications ?
The idea is that I am having a set of functions f1,f2,f3....,fn. All the pre-processing and post-processing are common for these functions. So I have kept this in a MATLAB code and deployed as exe. The functions are written in separate .m and protected as .p. Now if I have to add a new function, I need to create only a .p file and copy it to a location.
I am also trying to add my .exe concept
function MyApplication(function_file_path)
% Preprocessing
% call function_file_path (.p file)
Can addpath be used since this is a deployed application ?
% Postprocessing
end
댓글 수: 0
채택된 답변
Walter Roberson
2018년 9월 19일
편집: Walter Roberson
2018년 9월 19일
Deployed executables must have all .m and .p files available at the time of compilation. They are encrypted and included in the .ctf and are executed in encrypted form. It is never possible to evaluate unencrypted .m or .p from a deployed executable.
The closest you can get is that loadlibrary() can be used to call into external shared objects whose contents do not have to be fixed at the time of deployment, as long as the API does not change. It would be valid to have an initialization layer that looked into a folder to find and catalog .dll and to return their names or identifiers, with calllib() being used to call to the consistent interface layer that would call into the plug-ins some-how. I do not think it would be possible to write the plug-ins in MATLAB and I do not think it would be possible to use engOpen() and related
"Engine applications require an installed version of MATLAB; you cannot run the MATLAB engine on a machine that only has the MATLAB Runtime"
댓글 수: 5
Walter Roberson
2018년 9월 19일
It just might be possible to carefully construct calls into a shared library created by MATLAB Compiler SDK; the wording at https://www.mathworks.com/help/compiler_sdk/cxx/calling-a-shared-library.html hints it might work. But it would not surprise me if it did not work, on the basis that the CTF generated by MATLAB Compiler SDK might not happen to have the same encryption key as the one generated by MATLAB Compiler, so it might not be possible to initialize everything properly.
... I don't know.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Get Started with MATLAB Compiler SDK에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!