Red de conocimiento informático - Material del sitio web - Cómo usar matlab para generar archivos dll

Cómo usar matlab para generar archivos dll

Por lo general, usamos Matlab para escribir algoritmos de procesamiento de imágenes porque tiene funciones de biblioteca ricas y operaciones convenientes. Pero el lenguaje C/C se suele utilizar en proyectos de ingeniería. Si reescribimos completamente el código Matlab en código C, será muy problemático. La mejor manera es hacerlo. ¡El programa m se convierte en un archivo dll con la ayuda de matlab y la interfaz C/C!

Primero use matlab para la conversión. m en un archivo dll.

1. Ingrese mex -setup en la línea de comando.

Pregunte si desea instalar el compilador de Matlab localmente y luego seleccione el tipo de compilador, incluido el editor que viene con Matlab y otros editores detectados, como "e:\Program files\Microsoft Visual Studio ". Microsoft Visual C/c versión 6.0", elija según su situación real.

2. Ingrese mbuild -setup en la línea de comando.

Las opciones aquí son similares a las anteriores, luego seleccione Entorno Aceptar.

3. Generar un archivo dll

Un comando MCC-w CPP lib: add-t link: libadd.m

El agregado anterior indica el dll generado. El nombre del archivo, el siguiente add.m es. El nombre del archivo m es como su nombre indica. Después de la generación, habrá 8 archivos más, entre los que se agrega add.ctfadd.dll. El archivo libadd.h4 es útil. Se dice que la nueva versión de Matlab no generará archivos .ctf.

En segundo lugar, llame al archivo dll generado en VC6.0

Para el archivo dll generado anteriormente, podemos usar la herramienta Depende de VC6.0 para ver el nombre de la función exportada. , pero al llamar a una función exportada, debe conocer el tipo de retorno de los parámetros formales de la función. Aquí necesitamos usar. h, que contiene la declaración de la función exportada. Aquí, ilustraremos el uso con ejemplos:

1, archivo add.m

Función [a, b]=add(x, y)

a = 2 * x y;

b = 3 * y;

Fin

Ten en cuenta que la función agregar tiene dos valores de retorno, por lo que puedes adivinar que es cómo se maneja en C.

Archivo 2.add.h

Intercepta uno de los códigos clave, como se muestra a continuación:

External void add(int nargout, mwArray amp one, mwArray ampb

, const mwArray ampx, const mwArray ampy);

De hecho, el retorno de la función es una forma disfrazada de parámetros formales, seguidos del número de parámetros de salida, salida parámetros y parámetros de entrada. ¡Las reglas utilizadas por el dll de algoritmo personalizado en el proyecto en el que PS está trabajando actualmente son similares a las que aparecen aquí!

3. Llame al archivo dll en C

(1) Cree un nuevo proyecto vacío y coloque los cuatro archivos mencionados anteriormente en el directorio del proyecto;

( 2) Directorio de inclusión del directorio VC: directorio de inclusión en matlab.

Por ejemplo, el mío es E:\MATLAB7\extern\include.

(3)v El directorio de la biblioteca en el directorio c: el directorio lib en matlab.

e:\MATLAB 7\extern\lib\win32\Microsoft\msvc 60, ¡debe modificarse de acuerdo con la versión de VC!

(4) Propiedades del proyecto-Conexión-Entrada-Dependencias adicionales

Entrada: agregue libmcmcmcrrt . O agregue el siguiente código en el preprocesamiento.

#pragma comment(lib," mclmcrrt.lib")

#pragma comment(lib," mclmcr.lib")

#pragma comment(lib) , " add.lib ")

4. Código C

# incluir ltiostream gt

#Incluir "add.h"

Utilice el espacio de nombres std

int main()

{

if (!addInitialize())

{

¡La inicialización de cout lt lt falló! ! !" lt ltendl

return-1;

}

mwArray a(1, 1, MX double _ CLASS);

mwArray b(1, 1, MX doble _ CLASE);

a(1, 1) = 20

b(1, 1) = 30; p>mwArray x(1, 1, MX double _ CLASS);

mwArray y (1, 1, MX double _ CLASS);

//El número de parámetros de salida, salida Número de parámetros, ingrese el número de parámetros

add(2, x, y, a, b

double * i = new double; p> doble * j = nuevo doble;

x.GetData(i, 1);

y.GetData(j, 1); lt" x = " lt lt* i lt lt" y = " lt lt* j lt ltendl

getchar();

Devuelve 0;

}

p>

Nota: addInitialize() debe ser