2012-03-22 14 views
5

La struttura del mio file ANE assomiglia a questo:Come usare Dll esterno in Air Native Extension?

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

Se ExtensionDll.dll utilizza le funzioni nell'altra Dll, l'estensione non verrà caricato. DllMain non viene chiamato. Sembra che DllUsedByExtensionDll.dll non si trovi nel percorso di ricerca DLL quando l'applicazione aerea utilizza l'estensione.

Come devo fare in modo che l'applicazione trovi le Dll aggiuntive, se non desidero inserirle in un percorso Dll comune?

risposta

0

Se la DLL utilizza altre DLL, includere le DLL di riferimento nel progetto in cui si utilizzerà il file ANE.

+0

Um ... come includerli? – BlueWanderer

6

Ho avuto lo stesso problema e sono andato a questo per alcuni giorni. Risulta che ci sono due modi per risolvere questo.

  1. Export di esportazione Build, assicurandosi che DllUsedByExtensionDll.dll sia inserito nella stessa directory del file eseguibile.
  2. Per scopi di debug, copiare DllUsedByExtensionDll.dll nella directory bin SDK Adobe AIR, in cui si trova l'eseguibile Air Debug Launcher (adl).

Non è necessario impacchettare DllUsedByExtensionDll.dll nell'ANE che si sta creando.

Il problema è che ExtensionDll.dll non riesce a trovare DllUsedByExtensionDll.dll quando viene avviato dal debugger, poiché l'eseguibile per il debugger si trova in AIR SDK. Una volta esportata la versione di rilascio, tuttavia, la tua app è l'eseguibile, quindi ora cerca la DLL nella sua directory principale.

Se si desidera eseguire il debug di questo per ottenere maggiori informazioni su cosa potrebbe essere sbagliato, suggerisco di eseguire l'app tramite la riga di comando utilizzando il comando adl.

Per me, l'esecuzione del debug/run di Flash Builder mi ha impedito di vedere l'errore di Windows "il programma non può essere avviato perché manca il dll dal computer". E questo mi ha portato per un lungo periodo in una caccia all'oca selvaggia.

+1

Invece di copiare, potresti includere la directory che contiene la dll nel tuo '% PATH%'. Vedi ad esempio il mio [script di esecuzione] (https://github.com/Ventero/FRESteamWorks/blob/master/test/bin-debug/runWin.bat). Non sono sicuro che sia possibile in Flash Builder. – Ventero