Matlab - Generar .dll

 
Vista:

Generar .dll

Publicado por Virginia (1 intervención) el 07/06/2004 11:34:38
Hola a todos!!
Soy nueva en esto de Matlab asíque perdonar si mis dudas son un poquito tontas.....
Bueno, necesito utilizar un archivo Matlab para una aplicación VB; creo saber cómo se hace:
-genero la función matlab que deseo y establezco su archivo .m
-a partir de éste tengo que generar una dll ......PERO NO SE CÓMO!!!
Alguien puede echarme una mano????

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Generar .dll

Publicado por Toni (1 intervención) el 08/06/2004 21:38:42
Lo suyo es que tengas los CDs de ayuda. Si es así pásate por la parte del Matlab COM Builder porque te lo explican bastante claro y mejor de lo que pueda hacerlo yo.

Suponiendo que no la tienes te voy a intentar hacer un brevísimo resumen. De todas formas si tienes dudas preguntas y ya está. Yo uso la R13 de Matlab pero supongo que será similar en las demás.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar .dll

Publicado por Toni (1 intervención) el 08/06/2004 21:42:53
Lo mando en 2 partes porque el foro no me acepta todo de una vez.
- Obviamente tienes un compilador de c (¿si no cómo pretendes crear la dlll?). Lo primero será elegir el compilador porque el que viene por defecto no compila cierto tipo de archivos. (es cuestionable entonces para qué sirve). Escribe \\\"mbuild -setup\\\" en la ventana de comandos...supongo que eres capaz de hacerlo sola. Yo no he sido capaz de hacer que funcione con el VS .NET 2003 y me he tenido que bajar el VS 6.0 pero tu misma.
- Carga el Matlab Com Builder (start/Matlab/Matlab Com Builder o escribe comtool)
- File/New Project
- Elige nombre de componente y clase (supongo que no hay que explicar que es esto). Olvida la versión y deja el dir por defecto. El resto... bueno es bastante intuitivo pero si no sabes que elegir pregunta de nuevo (ya dije que era un brevísimo resumen). Sal de esta ventana.
- Vete a la clase que quieras ampliar y en Project/Add File selecciona 1 a 1 los .m o .mex que quieras añadir.
- Una vez añadidos todos los archivos dale al botón Build y te lo compila.
- La dll está dentro del directorio distrib del componente que hayas creado.

Obivamente las puedes usar directamente como como componentes COM añadiendolo como referencia y....bueno, la parte de VB es cosa tuya.

Como ya he dicho lo suyo es la ayuda de Matlab pero si tienes dudas pregunta porque sé que he sido demasiado breve en mis explicaciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar .dll

Publicado por Virginia (1 intervención) el 09/06/2004 10:55:54
Muchas gracias Toni!!!
La verdad es que así nada más empezar se me ocurre preguntarte qué es eso de la R13? Perdona si mis preguntas son un poco insulsas pero la verdad es que de Matlab ando \'algo pegada\' (no se nota verdad?).
Bueno, acabo de ver tu mail y voy a ponerlo en práctica, asíque supongo que irás teniendo noticias mías....
Muchísimas gracias de nuevo!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar .dll

Publicado por Virginia (1 intervención) el 09/06/2004 11:21:26
Ya estoy aquí!!!
Mira, un par de preguntillas:
-1: cuando dices que escriba mbuildsetup en la ventana de comandos, ¿te refieres a la del sistema o a alguna ventana de comandos que tiene VS 6.0(por cierto yo tengo instalada esta versión de compilador)?
-2: siento decirte que exactamente no se el significado de componente y clase en Matlab......¿es similar al de cualquier lenguaje de programación orientado a eventos? ¿será el nombre por el que luego tenga que referenciar a mi grupo de ficheros .m, no?

Gracias.....

Saludos,
Virginia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar .dll

Publicado por Toni (1 intervención) el 09/06/2004 21:26:15
- R(Release)13 = Matlab 6.5. al igual que la R12 era el Matlab 6.1. Es la propia denominación que usan en su propia página. Acaban de sacar hace poco el Matlab 7 (R14) pero todavía no lo he probado. Efectivamente, cuando agreges referencias tendrás que buscar ese nombre

- Componente y clase en Matlab es igual que en cualquier lenguaje de programación. Son los nombres que después usarás cuando crees tu programa.

- La ventana de comandos (Command Window) es la ventana principal del Matlab, donde escribes normalmente si no estás programando. Es que el Matlab 6.5 te abre por defecto varias ventas, por eso lo dije.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Toni!!!

Publicado por Virginia (1 intervención) el 12/06/2004 13:06:22
Hola,
mira me he puesto a realizar la dll y tengo un problema; te lo cuento paso a paso ¿vale?:

-Bueno seguí los pasos que me indicaste: creé mis dos archivos con extensión .m que después quiero utilizar en VB.

-Llegados al punto en que he de elegir el nombre de componente y la clase los llamé 'MathTools' a ambos, dejé el resto por defecto y en las opciones de compilación seleccioné las dos primeras.

- Cerré la ventana y me situé en la principal de Matlab Com Builder.

-Antes de esto, la aplicación me dijo que la carpeta MathTools no existía que si la quiero crear y le dije que sí.

- Seleccioné la opción 'MFiles' que aparece al abrir la carpeta creada y pulsé Project/AddFile, escogiendo los archivos creados anteriormente.

-Al compilar me da un error y no me crea el directorio 'distrib' que me comentaste, si no uno denominado 'src' que aparece vacío.....

¿Qué he podido hacer mal?

Muchas gracias!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Toni!!!

Publicado por Virginia (1 intervención) el 12/06/2004 13:21:22
Por cierto el error que me aparece es el siguiente:

Error using ==>comtool(build)
Build error.

Por si sirve de algo....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Toni!!!

Publicado por Toni (1 intervención) el 14/06/2004 13:04:31
Los pasos son correctos así que parece ser un problema con el compilador. Es muy importante que revises el primer paso, lo de "mbuild -setup" dado que el que viene por defecto no compila (ya te dije que no entiendo su utilidad). Asegurate tamibén que te coge la direccción correcta porque a mi no se por qué pero me lo detectaba dentre del directorio "program files" cuando yo evidentemente tengo "Archivos de programa".

De todas formas "Error using ==>comtool(build)" te va salir con independencia del error que sea. La descripición más detallada del error aparece al final de la ventana "Build Status" del Matlab COM Builder o también puedes acceder si le das a Build/Open Build Log. Así que si no lo solucionas con "mbuild -setup" dime exactamente el error que te sale y lo revisaré.

Una última cosa, en la medida de lo posible compila en C y no en C++ porque dependiendo de las instrucciones puede darte problemas. Esto último no es que lo diga yo, sino que viene así en la ayuda de Matlab.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Toni!!!

Publicado por Virginia (1 intervención) el 17/06/2004 12:33:15
Hola,
Como verás no he podido solucionarlo....te mando el comentario q aparece en la ventana Build/OpenBuild Log a ver si puedes echarme una mano...

Building standalone executable...
mcc -M -silentsetup -d 'C:/MATLAB6p5/work/MatlabGauss/src' -B 'ccom:MatlabGauss,MatlabGauss,1.0' -i class{Mgauss:C:/MATLAB6p5/work/CalculoExponencial.m,C:/MATLAB6p5/work/distexp.m}

Por cierto, tengo dos compiladores de C Microsoft VS version 6 instalados en directorios distintos; la instrucción 'mbuild -setup' detecta el que tengo en Archivos de Programa,¿no habrá ningún conflicto por ello?

Gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Toni!!!

Publicado por Toni (1 intervención) el 17/06/2004 19:33:41
Lo que me has puesto es el principio, justo después de eso vendran en cada fila el nombre de uno de los archivos que toma del matlab (no sólo los tuyos), y al final te dice el error, sería algo así. (Caso real intentando compilar con VS .NET), todos los errores tienen una estructura similar.

Building standalone executable...
mcc -M -silentsetup -d 'C:/MATLAB6p5/work/bode/src' -B 'ccom:bode,bode,1.0' -i C:/MATLAB6p5/work/pruebas.m
bode_idl.idl
oaidl.idl
objidl.idl
unknwn.idl
wtypes.idl
basetsd.h
guiddef.h
ocidl.idl
oleidl.idl
servprov.idl
urlmon.idl
msxml.idl
mwcomtypes.idl
oaidl.acf
ocidl.acf
LINK : fatal error LNK1104: no se puede abrir el archivo 'msvcirt.lib'

Lo que me has puesto es lo que tendrías que escirbir en la ventana de comandos para compilar si no usas el Matlab COM Builder.

Mientras estén en directorios distintos los compiladores, no hay problemas. De todas formas podrías ver si te funciona intentando compilarlo con el otro. Espero que esto no te corriera excesiva prisa porque lleva ya 10 días.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Toni!!!

Publicado por Virginia (1 intervención) el 28/06/2004 15:33:57
Hola!!, aún estoy con esto liailla....prisa lo que es prisa me corre, pero mientras que lo soluciono sigo haciendo otras partes de la aplicación...

Mira he vuelto a ejecutarlo y el error que me da en la ventana Open Build Log que me dijiste, es lo que te envié, no aparece ninguna lista de archivos ni nada por el estilo....

Muchas gracias Toni y perdona por todo el 'coñazo' que te estoy dando.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Toni!!!

Publicado por Toni (1 intervención) el 30/06/2004 10:26:50
Buenas.

Prueba a poner en la ventana de comandos:
mcc -v -M -silentsetup -d 'C:/MATLAB6p5/work/MatlabGauss/src' -B 'ccom:MatlabGauss,MatlabGauss,1.0' -i class{Mgauss:C:/MATLAB6p5/work/CalculoExponencial.m,C:/MATLAB6p5/work/distexp.m}

Fíjate que he añadido el "-v". Esto te mostrará paso a paso lo que vaya haciendo el compilador y pos supuesto detecta más claramente los errores. LLegados a este punto te advierto que no todas las funciones te permiten la creación de dll, al menos yo he sido incapaz de itroducir funciones propias de la toolbox control difuso y tuve que buscar métodos alternativos. De todas formas te avisa con el correspondiernte error.

Poco más puedo decirte si no conozco el error. Como mucho te los podría compilar yo mismo, pero obviamente esa no es la solución dado que resolvería puntualmente tu problema pero volverías a tenerlo en un futuro.

Yo me suelo pasar a menudo por eta página porque tengo bastantes problemas con el VB, así que para mi no es ninguna molestia resolverte las dudas que tengas en algo que si conozco un poco más como funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Toni!!!

Publicado por Ariel Padilla (8 intervenciones) el 23/04/2008 23:49:54
Hola Tony, tengo algunas dudas con respecto a un builder espero puedas mandarme tu mail para ser un poco mas amplio por aquello de las limitaciones del foro.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar .dll

Publicado por Gabriel (1 intervención) el 23/05/2005 16:00:07
Hola Virginia estoy tratando de crear unos dll para utilizarlos desde Visual Basic pero no he podido de hecho no soy programador soy Electricitas y estoy un bastante perdido si tienes algo que me pueda ayudar te lo agradeceria Saluods....!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Generar .dll

Publicado por nekane (1 intervención) el 09/03/2006 14:51:52
Hola a todos!

Estoy tratando de generar una dll partiendo de un fichero con extensión .m en el cual tengo mi algoritmo implementado.
La idea es llamar a esa dll desde Labview sin tener que tener instalado Matlab.
He conseguido mediante el compilador y llamando a mi .m que me genere una serie de fichero con extensiones:
.c, .export, .h , .ctf, .c, .exp, . dll, .lib

Se generar el .exe mediante Visual C añadiendo en un proyecto algunos de los fichero anteriores mencionados.
Pero la dll no se como generarla. ¿Me podría ayudar alguien poniendome un ejemplo muy sencillo tipo:

suma.m

function res=suma(a)
res=a+a;

y indicarme todos los pasos hasta llegar a la .dll?
muchas gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Generar .dll

Publicado por Nicolas (4 intervenciones) el 15/04/2006 20:24:14
Hola a todos!! Estoy tratando de generar un componente con el COM Builder del Matlab 6.5 R13. Se que primero tengo que configurar el compilador con mbuild -setup, pero me aparece solo esto:

>> mbuild -setup
Please choose your compiler for building standalone MATLAB applications:

Would you like mbuild to locate installed compilers [y]/n? y

Select a compiler:
[1] Lcc C version 2.4 in C:\MATLAB6P5\sys\lcc

[0] None

Tengo que instalar el Visual Studio .NET??? Lo único que tengo instalado son el Borland Delphi y el ASP Matrix .NET

Muchas gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar