es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es compatible WTL 10 con Visual Studio 2022?

Estoy trabajando en la creación de un control ActiveX utilizando ATL/WTL en Visual Studio 2022, pero cuando intento compilar mi solución, obtengo los siguientes errores:

LNK2019 símbolo externo no resuelto impGetOpenFileNameA referenciado en la función “public: _int64 _cdecl WTL::CFileDialogImpl::DoModal(struct HWND *)” (?DoModal@?$CFileDialogImpl@VCFileDialog@WTL@@@WTL@@QEAAJPEAUHWND__@@@Z)

LNK2019 símbolo externo no resuelto impGetSaveFileNameA referenciado en la función “public: _int64 _cdecl WTL::CFileDialogImpl::DoModal(struct HWND *)” (?DoModal@?$CFileDialogImpl@VCFileDialog@WTL@@@WTL@@QEAAJPEAUHWND__@@@Z)

Creo que probablemente sea atldlgs.h lo que está causando todos estos problemas, pero no sé por qué ni cómo puedo solucionarlo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás enfrentando errores LNK2019 al intentar compilar un control ActiveX creado con ATL/WTL en Visual Studio 2022. Los errores están relacionados con símbolos externos no resueltos __imp_GetOpenFileNameA y __imp_GetSaveFileNameA, los cuales son referenciados en la función “DoModal” de la clase “CFileDialogImpl”.

    A partir de los mensajes de error, parece que el enlazador no puede encontrar las definiciones de estos símbolos. Estas funciones forman parte de la API de Windows, específicamente de la biblioteca “Comdlg32.dll”, la cual proporciona la funcionalidad de cuadros de diálogo comunes para operaciones de abrir y guardar archivos.

    Para solucionar el problema, necesitas agregar una referencia a la biblioteca “Comdlg32.lib” en tu proyecto. Aquí están los pasos para hacerlo:

    1. Haz clic derecho en el nombre de tu proyecto en la ventana “Explorador de soluciones” y selecciona “Propiedades”.
    2. En la sección Configuration Properties > Linker > Input, agrega “Comdlg32.lib” al campo “Additional Dependencies”.

    3. Haz clic en Aplicar y luego en Aceptar para guardar los cambios.

    4. Reconstruye tu proyecto para verificar si los errores han sido resueltos.

    Esto debería solucionar los errores LNK2019 y permitirte compilar tu control ActiveX exitosamente. Si el problema persiste, es posible que necesites revisar otras configuraciones en tu proyecto o buscar ayuda adicional de un desarrollador experimentado.

Comments are closed.