MATLAB® совместно использовал поддержки интерфейса библиотеки C библиотечные подпрограммы только. Большинство профессионально составленных библиотек спроектировало, чтобы использоваться несколькими языками, и платформы хорошо работают. Для получения дополнительной информации смотрите Вызов C Функции в Разделяемых Библиотеках.
Многие некоммерческие библиотеки или библиотеки, которые были только протестированы с C++, имеют интерфейсы, которые не применимы и требуют модификации или интерфейсного слоя. В этом случае мы рекомендуем использовать файлы MEX.
Разделяемый интерфейс библиотеки не поддерживает элементы перегруженных функций или классы C++. Используйте интерфейс C++ MATLAB вместо этого. Для получения дополнительной информации смотрите Библиотеки C++.
printf ФункцияMATLAB не отображает вывод printf C функционируйте к командному окну.
Можно изменить немного объявление поля при помощи типа int или эквивалент. Например, если ваша библиотека имеет следующее, объявленное в его заголовочном файле:
int myfunction();
struct mystructure
{
/* note the sum of fields bits */
unsigned field1 :4;
unsigned field2 :4;
};
отредактируйте заголовочный файл и замените его на:
int myfunction();
struct mystructure
{
/* field 8 bits wide to be manipulated in MATLAB */
/* A char is 8 bits on all supported platforms */
char allfields;
};После редактирования исходного кода восстановите библиотеку. Затем возможно получить доступ к данным в этих двух полях с помощью побитового маскирования в MATLAB.
char определения для enum не поддержаны. В C, char постоянный, например, 'A', автоматически преобразован в его числовой эквивалент (65). MATLAB не преобразует константы. Использовать этот тип enum, отредактируйте заголовочный файл, заменив 'A' с номером 65 (int8('A') == 65). Например, замена:
enum Enum1 {ValA='A',ValB='B'};с:
enum Enum1 {ValA=65,ValB=66};затем восстановите библиотеку.
Объединения не поддержаны. Как обходное решение, измените исходный код, вынув union объявление и заменяющий его на самую большую альтернативу. Затем чтобы интерпретировать результаты, запишите код MATLAB по мере необходимости. Например, отредактируйте исходный код и замените следующее объединение:
struct mystruct
{
union
{
struct {char byte1,byte2;};
short word;
};
};
с:
struct mystruct
{
short word;
};
где на основанной на прямом порядке байтов машине, byte1 mod(f,256), byte2 f/256, и word=byte2*256+byte1. После редактирования исходного кода восстановите библиотеку.
Заголовочные файлы должны быть совместимы с поддерживаемыми компиляторами на платформе. Для актуального списка поддерживаемых компиляторов см. Поддерживаемые и Совместимые Компиляторы. Вы не можете загрузить внешние библиотеки с явными зависимостями от других компиляторов.
Разделяемый интерфейс библиотеки не делает функций вспомогательной библиотеки, которые работают с указателями функции.
Ограниченная поддержка многоуровневых указателей и структур, содержащих указатели. Используя вводы и выводы и элементы структуры, объявленные больше чем с двумя уровнями абстракции, не поддержан. Например, double ***outp переведенный в doublePtrPtrPtr не поддержан.
Разделяемый интерфейс библиотеки не делает функций вспомогательной библиотеки с переменным количеством аргументов, представленных замещающим знаком (...).
Можно создать несколько функций псевдонима в прототипном файле, один для каждого набора аргументов раньше вызывал функцию. Для получения дополнительной информации смотрите Прототипные Файлы MATLAB.