He creado un .dll en WinXP que afirma que no puede encontrar DWMAPI.DLL cuando está cargado. El problema es que esta DLL es una DLL de Vista, y este es un problema conocido para los usuarios de XP que tienen instalado IE7. La recomendación es desinstalar IE7 o reparar .NET Framework a través de Agregar/Quitar programas. Hice la reparación, y nada cambió. No voy a desinstalar IE7 ya que debe haber una solución mejor que no sea el equivalente a "reinstalar Windows".Cómo reparar la dependencia de carga de retraso DWMAPI.DLL en WinXP?
He leído cosas malas sobre las personas que intentaron desinstalar IE7, por lo que soy reacio a seguir esa ruta.
Estoy usando C++ en Visual Studio 2003 (7.1). No veo una opción en la que pueda haber forzado la demora de carga en el inicio de la aplicación. Acabo de usar la configuración predeterminada cuando creé el proyecto DLL. Recientemente encontré una opción interesante, Linker-> Input-> Delay Loaded DLLs, así que puse DWMAPI.DLL ahí para forzar que se cargue con retraso. Sin embargo, me sale esto al vincular:
LINK : warning LNK4199: /DELAYLOAD:dwmapi.dll ignored; no imports found from dwmapi.dll
.. y por supuesto no cambiaría nada cuando se trata de cargar mi archivo DLL. Por pura casualidad, agregué todo el árbol de archivos DLL que llevan a DWMAPI.DLL, y recibo el mismo mensaje. (Para el registro, es foundation.dll-> shell32.dll-> shdocvw.dll-> mshtml.dll-> ieframe.dll-> dwmapi.dll.)
Para ser más específico sobre lo que estoy haciendo , estoy escribiendo un plugin de Maya y obtener el texto siempre útil en el editor de script:
// Error: Unable to dynamically load : D:/blahblahblah/mydll.mll
The specified module could not be found.
//
// Error: The operation completed successfully.
//
// Error: The operation completed successfully.
(mydll) //
solía Dependency Walker para rastrear inicialmente por el problema, y eso es lo que me llevó a dwmapi.dll. Estos son los mensajes depende me da, y dwmapi.dll es el único que tiene un signo de interrogación amarillo junto a él:
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
Gerald es correcto. Maya está, de hecho, usando un PATH diferente al Dependency Walker. Mi complemento carga otra DLL (para procesamiento de imágenes) que vive en el directorio de plug-ins de Maya y depende de que no la encontró, pero Maya no lo hizo. Tuve que agregar "; plug-ins" a la RUTA en Maya.env.
Al ver que este problema no estaba relacionado con DWMAPI.DLL después de todo, pero DWMAPI es un problema común, publicaré el mejor enlace que encontré sobre el problema DWMAPI en el sitio web de Novell here. Básicamente, la mayoría de los programas tendrán esta advertencia en depends.exe, pero si hay un ícono de carga de espera junto a él, y está seguro de que el programa no llamará directa o indirectamente a DWMAPI, entonces está bien. El problema está en otra parte. Si el ícono de carga diferida no está presente, entonces tiene que mirar las opciones/DELAY y/DELAYLOAD en Visual Studio. El hecho de que eso dependiera me dio una "advertencia" y no un "error" fue una pista sobre el hecho de que DWMAPI no se está cargando automáticamente.
Apagué este problema en uno de nuestros servidores de Windows 2003. Es solo una maldita aplicación de consola y aún así (o alguna otra dependencia) dice querer también dwmapi.dll. Me encantaría ver una respuesta definitiva a esto. +1. – Kev
Creo que muchas de las vistas son de Google drive-bys. Simplemente buscar en "dwmapi.dll" tiene esto como el segundo resultado. –