Main Content

Limitaciones a la compatibilidad con bibliotecas compartidas

Admite rutinas de biblioteca de CMATLAB

La interfaz de biblioteca compartida solo admite rutinas de biblioteca de C.MATLAB® La mayoría de las bibliotecas escritas profesionalmente diseñadas para ser utilizadas por múltiples lenguajes y plataformas funcionan bien. Para obtener más información, consulte.Llame a funciones de C en bibliotecas compartidas

Muchas bibliotecas o bibliotecas no comerciales que solo se han probado desde C++ tienen interfaces que no son utilizables y requieren modificaciones o una capa de interfaz. En este caso, se recomienda usar.MEX los archivos

Cargar bibliotecas de C++

La interfaz de biblioteca compartida no admite clases de C++ o elementos de funciones sobrecargadas. Utilice la interfaz de C++ en su lugar.MATLAB Para obtener más información, consulte.Bibliotecas de C++ en MATLAB

Limitaciones mediante functionprintf

no muestra la salida de la función C en la ventana de comandos.MATLABprintf

Campos de bits

Puede modificar una declaración de campo de bits mediante el tipo o un equivalente.int Por ejemplo, si su biblioteca tiene lo siguiente declarado en su archivo de encabezado:

int myfunction();  struct mystructure {     /* note the sum of fields bits */     unsigned field1 :4;     unsigned field2 :4; }; 

Edite el archivo de cabecera y reemplácelo por:

int myfunction();  struct mystructure {     /* field 8 bits wide to be manipulated in MATLAB */     /* A char is 8 bits on all supported platforms */     char allfields;  };

Después de editar el código fuente, recompile la biblioteca. Entonces es posible acceder a los datos en los dos campos usando el enmascaramiento de bits.MATLAB

Declaraciones enum

definiciones no son compatibles.charenum En C, una constante, por ejemplo, se convierte automáticamente a su equivalente numérico (65). no convierte constantes.char'A'MATLAB Para utilizar este tipo de, edite el archivo de cabecera reemplazando con el número 65 ().enum'A'int8('A') == 65 Por ejemplo, reemplace:

enum Enum1 {ValA='A',ValB='B'};

Con:

enum Enum1 {ValA=65,ValB=66};

a continuación, recompile la biblioteca.

Uniones no admitidas

No se admiten uniones. Como solución alternativa, modifique el código fuente sacando la declaración y sustituyéndolo por la alternativa más grande.union A continuación, para interpretar los resultados, escriba el código según sea necesario.MATLAB Por ejemplo, edite el código fuente y reemplace la siguiente Unión:

struct mystruct {     union      {        struct {char byte1,byte2;};         short word;     }; }; 

Con:

struct mystruct  {     short word; }; 

donde en una máquina basada en Little-endian, es, es, y.byte1mod(f,256)byte2f/256word=byte2*256+byte1 Después de editar el código fuente, recompile la biblioteca.

Dependencias del compilador

Los archivos de encabezado deben ser compatibles con los compiladores admitidos en una plataforma. Para obtener una lista actualizada de los compiladores admitidos, consulte.Los compiladores compatibles y compatibles No puede cargar bibliotecas externas con dependencias explícitas en otros compiladores.

Limitaciones mediante punteros

Punteros de función

La interfaz de biblioteca compartida no admite funciones de biblioteca que funcionen con punteros a función.

Punteros multinivel

Compatibilidad limitada con punteros y estructuras multinivel que contienen punteros. No se admite el uso de entradas y salidas y miembros de estructura declarados con más de dos niveles de direccionamiento indirecto. Por ejemplo, traducido a no es compatible.double ***outpdoublePtrPtrPtr

Funciones con número variable de argumentos de entrada no admitidos

La interfaz de biblioteca compartida no admite funciones de biblioteca con un número variable de argumentos, representado por un botón de puntos suspensivos ()....

Puede crear varias funciones de alias en un archivo prototipo, una para cada conjunto de argumentos utilizado para llamar a la función. Para obtener más información, consulte.Los archivos prototypeMATLAB

Temas relacionados