2012-03-22 15 views
5

La estructura de mi archivo ANE se ve así:Cómo usar Dll externo en Air Native Extension?

<META-INF> 
    <ANE> 
     <Windows-x86> 
      ExtensionDll.dll 
      DllUsedByExtensionDll.dll 
     extension.xml 
mimetype 
catalog.xml 
library.swf 

Si ExtensionDll.dll utiliza las funciones de la DLL de otra, la extensión no se cargará. DllMain no se llama. Parece que DllUsedByExtensionDll.dll no está en la ruta de búsqueda Dll cuando la aplicación aérea usa la extensión se está ejecutando.

¿Cómo debo hacer que la aplicación encuentre los Dlls adicionales, si no los quiero poner en una ruta común de Dll?

Respuesta

0

Si su dll está utilizando otros dlls, entonces incluya los dll de referencia en el proyecto donde va a usar ese archivo ANE.

+0

Um ... ¿cómo incluirlos? – BlueWanderer

6

He tenido el mismo problema y fui a esto por unos días. Resulta que hay dos formas de resolver esto.

  1. Exportar versión Build, mientras se asegura de que el DllUsedByExtensionDll.dll se empaqueta en el mismo directorio que el ejecutable.
  2. Para depuración, copie DllUsedByExtensionDll.dll en su directorio de Adobe AIR SDK bin, donde se encuentra el ejecutable Air Debug Launcher (adl).

No necesita empaquetar DllUsedByExtensionDll.dll en el ANE que está creando.

El problema es que ExtensionDll.dll no puede encontrar el DllUsedByExtensionDll.dll cuando se inicia desde el depurador, ya que el ejecutable para el depurador se encuentra en el SDK de AIR. Sin embargo, una vez que exportas la versión de lanzamiento, tu aplicación es el ejecutable, por lo que ahora busca el dll en su directorio raíz.

Si desea depurar esto con el fin de obtener más información sobre lo que podría estar equivocado, sugieren que se ejecuta la aplicación por línea de comandos utilizando el comando adl.

Para mí, ejecutar a través de la depuración/ejecución de Flash Builder significaba que no podía ver el error de Windows "el programa no puede iniciarse porque falta el DLL de su computadora". Y eso me llevó a una loca búsqueda por mucho tiempo.

+1

En lugar de copiar, puede incluir el directorio que contiene el dll en su '% PATH%'. Ver por ejemplo mi [ejecutar script] (https://github.com/Ventero/FRESteamWorks/blob/master/test/bin-debug/runWin.bat). Sin embargo, no estoy seguro si eso es posible en Flash Builder. – Ventero

Cuestiones relacionadas