| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
dobermannmx Master


Registrado: 30 Ago 2006Mensajes: 191Ubicación: Zapopan, Jal. - México
|
Publicado: Jue 05 Mar, 2009 8:43 pm Asunto: DLL generada con Builder, problemas con Visual C++ |
|
|
Hola builderos, he creado una DLL con builder y necesito que puedan utilizarla con Visual C++ de Microsoft, instalé el Visual Studio 2008 para realizar pruebas y no logro hacerla funcionar. Mi librería tiene una clase y como único parametro requiere un TApplication, Visual C++ también maneja la clase Application, pero nomás no logro poder pasarla como parámetro, ya modifiqué el archivo de cabecera que requieren el visual c++, para que reciba como parámetro un (System::Windows::Forms::Application ^MiApp) y hasta ahi no tengo problema, pero cuando creo la instancia de mi clase en visual c++ y le paso como parámetro Application, me marca el siguiente error:
"System::Windows::Forms::Application" : ilegal use of this type as an expression
Si alguien me pudiera decir que tengo que hacer o como soucionarlo, le estaré muy agradecido.
Gracias y Saludos _________________ ISC
Dobermannmx |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Jue 05 Mar, 2009 9:52 pm Asunto: |
|
|
¿No será que la clase TApplication de Builder y de Visual C tienen definiciones distintas?
No manejo Visual C pero seguro que son distintas. La pregunta sería ¿Porque van a ser iguales?.
Saludos. |
|
| Volver arriba |
|
 |
dobermannmx Master


Registrado: 30 Ago 2006Mensajes: 191Ubicación: Zapopan, Jal. - México
|
Publicado: Jue 05 Mar, 2009 11:06 pm Asunto: |
|
|
gracias por responder escafandra, pues lo curioso es que desde el compilador de Visual C++ me marca error en la linea donde paso por parámetro el Application, vamos el error no es al momento de usar la libreria, si no en el compilador. Me suena lógico lo que dices pero en todo caso la aplicación compilada en visual me tronaría al momento de querer usar la clase del visual no?
En su defecto, te cambio la pregunta, que otra cosa puedo utilizar como parámetro de mi clase en builder que sea compatible con MSVisual??, requiero el TApplication porque me permite tener el control de la aplicación que usa mi DLL, pero no se me ocurre que otra cosa pueda usar en su lugar.
Gracias y seguiré investigando.
Salu2 _________________ ISC
Dobermannmx |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Vie 06 Mar, 2009 12:00 am Asunto: |
|
|
Pues la única forma de compatibilizar es que los parámetros pasados sean estandar, es decir de la misma API de Windows: Histance, hModule y Handle; según te interese.
Saludos. |
|
| Volver arriba |
|
 |
dobermannmx Master


Registrado: 30 Ago 2006Mensajes: 191Ubicación: Zapopan, Jal. - México
|
Publicado: Vie 06 Mar, 2009 2:06 am Asunto: |
|
|
En efecto tienes razón, ya hice los cambios pertinentes para apegarme mejor a la API y no a la definición de componentes de cada plataforma de desarrollo. Ahora el problema que me enfrento es que como no conozco el visual c++ de microsoft, no sé que tengo que hacer del lado del compilador para poder ligar la aplicación a mi DLL , ya que obviamente el LIB generado por borland no funciona en Visual, pero bueno ya estoy investigando en foros de visual.
Gracias por toda ayuda escafandra.
Saludos _________________ ISC
Dobermannmx |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Vie 06 Mar, 2009 9:57 am Asunto: |
|
|
Pienso que la libreria de importación, es decir, el lib generado por Builder, o el generado por IMPLIB, debe funcionar.
Una forma infalible es usar las API para importar las funciones una a una por separado:
| Código: | HINSTANCE hLib = LoadLibrary("midll.dll");
GetProcAddress(hLib,"Función"); |
Otro problema es la incompatibilidad de nombres en las dll. revisa esto.
Saludos. |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Dom 08 Mar, 2009 10:23 pm Asunto: |
|
|
Otro detalle que se me olvidaba, la utilidad IMPDEF del Builder te crea un archivo.def con los nombres de las funciones exportadas. Aquí puedes ver el nombre exacto con el que debes importar dichas funciones.
Saludos. |
|
| Volver arriba |
|
 |
dobermannmx Master


Registrado: 30 Ago 2006Mensajes: 191Ubicación: Zapopan, Jal. - México
|
Publicado: Lun 09 Mar, 2009 4:38 pm Asunto: |
|
|
Mil gracias de nuevo escafandra, tu ayuda me ha sido de gran utilidad.
Saludos _________________ ISC
Dobermannmx |
|
| Volver arriba |
|
 |
|