Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Dlls Y Mfcs

Iniciado por MChiz, 22 de Noviembre de 2003, 01:25:17 AM

« anterior - próximo »

MChiz

 Hola a todos!

Me he vuelto a encontrar con un problemilla al utilizar DLLs.
Tengo mi DLL que es una implementacion de una clase interface ( motor grafico, por ejemplo ) y esta hace un new del objeto mediante una funcion. Bueno, hasta aqui todo bien. Ahora me he querido hacer una aplicacion con MFCs utilizando este objeto, pero me he encontrado con el problema de que la aplicacion no me quiere cargar la DLL ( utilizo LoadLibrary ).
Alguien sabe porque es esto? He dejado todos los settings del proyecto igual que el resto, pero no consigo solucionarlo... si alguien me pudiese ayudar, le estaria muy agradecido. Este problemilla me saca de quicio....  (nooo)
En fin, muchisimas gracias por adelantado!

Un saludote!!

EDIT: La funcion GetLastError( ) de Windows me devuelve el error numero 126 ( The specified module could not be found.  ERROR_MOD_NOT_FOUND ) y juro y perjuro que el archivo esta ahi, y con otras aplicaciones no MFCs me funciona a la perfeccion...  (grrr)  

BeRSeRKeR

 El único consejo que te puedo dar es que hagas un GetCurrentDirectory antes del LoadLibrary para asegurarte de que el directorio actual es el correcto.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

MChiz

 Ya lo habia probado, pero muchas gracias igualmente. No se que puede ser... : (

ethernet

 Me suena q me pasaba lo mismo y era porque en el dllmain de mi DLL  no retornaba 1  en la carga de la misma. En la msdn dice q cuando se esta cargando si no retorna 1 la funcion LoadLibrary retorna un error. El parametro q especifica la carga esta en ul_reason_for_call (o algo asi XD) si usas el wizard del vc++.

No se si sera esto, me suena de haber tenido problemas con ello,lo mismo furrula.

saludos

MChiz

 Buenas:

Pues yo no tenia ningun DllMain; no lo necesitaba. Ahora se lo he puesto, pero parece que no pasa por ahi, pero con una aplicacion Win32 normal, si que pasa. Ciertamente el Windows no me cree cuando le digo que en la ruta X esta una DLL : ( No lo entiendo!!
Mi DllMain es esto:

BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID lpvReserved ) {
return TRUE;
}


Gracias por el intento!!

Estoy desesperandome por momentos...

ethernet

 exportas el DllMain?  

MChiz

 Lo unico que hago es poner, en los settings del proyecto, que el EntryPoint es DllMain. Y esto me funciona cuando es una aplicacion Win32 normal, pero no con MFC.
Desde la aplicacion MFC he hecho el LoadLibrary de unas pocas DLLs y la unica que me ha funcionado bien ha sido la OpenGL32.DLL...
Tambien he probado la AfxLoadLibrary, pero me da los mismos errores  (nooo)  (nooo)  (nooo)  (nooo)  

ethernet


seryu

 como me alegro de no usar mfc  :D  

MChiz

 Bueno, al fin lo he conseguido arreglar!

Al final la culpa no era de las MFCs, si no mia ( Gracias igualmente, ethernet, por el link. Muchas gracias ). Lo que pasaba es que la DLL que estaba intentando linkar esta, a su vez, intentaba linkar con otra DLL ( implicitamente, creo que se llama ) y era esta la que Windows no encontraba. Fallo mio...  :(

como me alegro de no usar mfc

Eso mismo pensaba yo, hasta que me han hecho ver la luz ^_^ Las MFC estan mejor de lo que parece.

Un saludote y gracias a todos!!

ethernet


synchrnzr

 Los comentarios de ethernet siempre son tan claros y concisos... -_-

sync

ZeruGiran

 MFCs  (shit)

wxwindows es una libreria para hacer ventanitas, botoncitos, comboboxs, barras de desplasamiento etc, lo mismo que las MFCs. La enorme ventaja es que es multiplataforma, tu programa hecho con wx tambien correra en linux.

Lo que se le puede criticar es que no esta 100% terminada, pero es tan buena que hay compañias que tienen planes de utilizarla en sus productos momerciales, por ejemplo Borland.

De las aplicaciones mas famosas que usan wxwindows esta XMule, un port multiplataforma de eMule.


Poco a poco las MFCs van a quedar relegadas, porque... ¿Para que hacer un programa que solo correra en Windows? Si puedo hacer unos que ademas correra en linux , mac, bsd, Etc.

Ademas Microsoft apuesta ahora por "FORMS" de .Net como substituto para las MFCs.

Ya hay .Net y C# para linux y ya pronto tendremos "FORMS" para linux. :D



Upss... ¿que no el tema era otro?  :huh:

Zeru sale del modo linuxero.

:P

MA]Mestre

 Querido zeru...

Citarwxwindows es una libreria para hacer ventanitas, botoncitos, comboboxs, barras de desplasamiento etc, lo mismo que las MFCs

... con MFCs puedes hacer threads, sockets, fpt, http, dao, odbc, files ,arquitectura documento/vista... con wxwindows ?¿? ...pues entonces hablamos de cosas diferentes.


CitarPoco a poco las MFCs van a quedar relegadas, porque... ¿Para que hacer un programa que solo correra en Windows? Si puedo hacer unos que ademas correra en linux , mac, bsd, Etc.

Pq hoy en dia mas del 90%  ( no se si me quedo corto ) de los usuarios tiene windows. Ademas pq no se puede comparar la calidad y velocidad de un programa generado para una plataforma que el que debe de preveer todas las posibles alterativas de donde se debe ejecutar. ( es como los soldaditos de metal que te compras y pintas, o bien los que te compras ya pintados )


CitarAdemas Microsoft apuesta ahora por "FORMS" de .Net como substituto para las MFCs.

Cierto es que se apuesta por .NET. Pero es que culo veo culo quiero los de MS ( .NET == filosofia Java ). De todas formas en vc .net no han eliminado MFCs tradicional, ni las aplicacione win32, pq sera ? ... tal vez pq no puedan competir en prestaciones de velocidad ante las que se hacen valer de un interprete para ejecturase en un s.o o en orto... vease Java con la Virtual Java Machine ( VJM ) o el .NET con su super framework, que dicho sea de paso ( esto es para pegarles ostias hasta que se queden calvos )  no tiene en casi dos años de existencia ya un framework para otras plataformas que no sea Win. ¿ En tonces que se gana con .NET ?...

Bueno, ya no rallo más, solo decir que wxwinows tiene su sitio y MFC ocupa otro, escoger la más adecuada depende de las necesidades del proyecto.

Un saludo.
Zeru nos vemos en #war3d  (ole) .

seryu







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.