exponenta event banner

pcode

Создание скрытых исполняемых файлов

Описание

пример

pcode(item) запутывает код в .m файл или папка на пути поиска и создает P-файлы с расширением .p. Если item является .m файл, то результирующий файл item.p. Если item является папкой, то все файлы сценариев или функций в этой папке запутаны в текущей папке. P-файл имеет приоритет над соответствующим .m для выполнения, даже после внесения изменений в .m файл.

Примечание

pcode функция запутывает программные файлы и не шифрует их, поэтому P-файлы не должны считаться безопасными. Файлы P-кодирования для защиты интеллектуальной собственности не рекомендуется.

pcode(item1,item2,...,itemN) создает P-файлы из каждого .m файл или папка, указанные в списке, разделенном запятыми.

пример

pcode(___,'-inplace') создает P-файлы в тех же папках, что и входные данные. Определить '-inplace' после всех других входных аргументов.

Примеры

свернуть все

Преобразование файла функции в P-файл.

В файле с именем myfunc.m в текущей папке определите функцию, возвращающую квадратный корень кубического многочлена.

function y = myfunc(x)
y = sqrt(x.^3 + x.^2 + x + 1);
end

Создание P-файла из myfunc.m. Определение файла, используемого MATLAB ® при вызовеmyfunc.

pcode myfunc
a = myfunc(3);
which myfunc
c:\myMATLABfiles\myfunc.p

Преобразовать выбранные файлы из sparfun в P-файлы.

Создание временной папки и определение существующего пути к ней .m файлы.

tmp = tempname;
mkdir(tmp)
cd(tmp)
filename = fullfile(matlabroot,'toolbox','matlab','sparfun','spr*.m');

Создайте P-файлы.

pcode(filename)
dir(tmp)
.            ..           sprand.p     sprandn.p    sprandsym.p  sprank.p     

Временная папка теперь содержит закодированные P-файлы.

Создание P-файлов из входных файлов, являющихся частью класса. (Эту же процедуру можно применить к файлам, входящим в пакет.) В этом примере используется существующий класс примеров MATLAB.

Определить classfolder как существующая папка класса, содержащая .m файлы.

classfolder = fullfile(docroot,'techdoc','matlab_oop', ...
    'examples','@BankAccount')
dir(classfolder)
classfolder =

C:\Program Files\MATLAB\R2019a\help\techdoc\matlab_oop\examples\@BankAccount


.              ..             BankAccount.m  

Создайте временную папку. В данный момент эта папка не имеет структуры классов.

tmp = tempname;
mkdir(tmp)
cd(tmp)
dir(tmp)
.            .. 

Создание P-файла для каждого .m файл в пути classfolder. Поскольку входные файлы являются частью класса, MATLAB создает структуру папок, так что выходной файл принадлежит одному классу.

pcode(classfolder)
dir(tmp)
.             ..            @BankAccount 

P-файл находится в той же структуре папок.

dir('@BankAccount')
.              ..             BankAccount.p  

Создайте P-файлы в той же папке, что и входные файлы.

Копировать несколько .m во временную папку.

filename = fullfile(matlabroot,'toolbox','matlab','sparfun','spr*.m');
tmp = tempname;
mkdir(tmp)
copyfile(filename,tmp)
dir(tmp)
.            ..           sprand.m     sprandn.m    sprandsym.m  sprank.m 

Создание P-файлов в той же папке, что и оригинал .m файлы.

pcode(tmp,'-inplace')
dir(tmp)
.            sprand.m     sprandn.m    sprandsym.m  sprank.m     
..           sprand.p     sprandn.p    sprandsym.p  sprank.p  

Входные аргументы

свернуть все

.m файл или папка для запутывания, заданная как вектор символа или скаляр строки.

  • Входной аргумент, не имеющий расширения файла и не являющийся именем папки, должен быть функцией в пути MATLAB или в текущей папке.

  • При использовании подстановочного символа *, pcode игнорирует все файлы без .m расширение.

  • pcode функция не поддерживает сценарии или функции в реальном времени (.mlx).

  • Если item находится в папке пакета или класса, затем pcode создает тот же пакет или структуру класса для размещения результирующих P-файлов.

Список .m файлы или папки, указанные как разделенный запятыми список векторов символов или строковых скаляров. Список может содержать сочетание файлов и папок.

Подробнее

свернуть все

Совместимость версий

pcode алгоритм был переработан в MATLAB версии R2007b. Если P-файл был создан до R2007b, он не будет выполняться в версиях R2015b или более поздних. Файлы, созданные в R2007b или более поздних версиях, не выполняются в R2007a или более ранних версиях.

Файлы, связанные с P-кодированием

В дополнение к программе, возможно, вы захотите запутать другие функции и сценарии, от которых зависит ваша программа. Чтобы определить файлы, необходимые для запуска программы, используйте matlab.codetools.requiredFilesAndProducts функция.

Обфускирующий код

P-файлы представляют собой запутанную форму кода MATLAB, предназначенную только для выполнения. Невозможно открыть P-файл в редакторе MATLAB или Live Editor.

Представлен до R2006a