warning LNK4089: all references to "OLEPRO32.DLL" discarded by /OPT:REF

rachel
27 de Mayo del 2002
// Usa LoadImage() para cargar la imagen en DIBSection
*phBitmap = (HBITMAP)LoadImage(NULL,NombreFichero,IMAGE_BITMAP, m_Width,m_Height,LR_CREATEDIBSECTION| LR_LOADFROMFILE);
se produce un warning:"LINK : warning LNK4089: all references to "OLEPRO32.DLL" discarded by /OPT:REF" y un error en tiempo de ejecución por intentar acceder a una direccion de memoria de solo "read".
Muchas gracias

herraiz
27 de Mayo del 2002
Por el mensaje, parece que está usando Visual C++ y MFC. Alguna vez he obtenido warnings como el que envías. Te envío algunas posibles soluciones:

1. Aunque parezca obvio, intenta reconstruir todo el proyecto (Rebuild All). Algunas veces si cambias la interfaz de alguna clase se producen errores fatales en tiempo de ejecución si no recompilas todos los archivos que usan esas clases.

2. Comprueba que has incluido todas las librerías que necesitas en el proyecto. Intenta compilar otro proyecto que use la misma libería, no vaya a ser que esté corrupta.

3. No tengo demasiada experiencia con MFC, pero asegúrate de que el 'casting' que haces a HBITMAP puede hacerse. Comprueba el tipo que devuelve LoadImage(). A veces, los 'casting' pueden ser fuentes de errores en tiempo de ejecución.

4. Por último la solución radial: pasa de MFC y prueba wxWindows, una biblioteca para desarrollo multiplataforma que nada tiene que envidiar a MFC, y que personalmente encuentro más sencilla (el código es más legible que el equivalente MFC). Además es soft libre, y se integra muy bien con Visual C++.

Espero que mis sugerencias no te hayan resultado demasiado obvias. Un saludo.

herraiz
27 de Mayo del 2002
Se me olvidaba, puedes encontrar wxWindows en la dirección www.wxwindows.org.

Hasta luego