windows - Sådan bruges ekstern DLL i Air Native Extension?

Indlæg af Hanne Mølgaard Plasc

Problem



Strukturen af ​​min ANE-fil ser sådan ud:


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


Hvis ExtensionDll.dll bruger funktionerne i den anden Dll, vil udvidelsen ikke blive lastet. DllMain kaldes ikke. Det lader til, at DllUsedByExtensionDll.dll ikke findes i Dll-søgevejen, når luftapplikationen bruger udvidelsen, kører.


Hvordan skal jeg få ansøgningen til at finde de ekstra DLL'er, hvis jeg ikke vil sætte dem ind i nogle almindelige DLL-stier?

Bedste reference


Jeg har haft det samme problem og gik på dette i et par dage. Det viser sig to måder at løse.



  1. Export Release Build, mens du sørger for, at DllUsedByExtensionDll.dll er pakket i samme mappe som din eksekverbare.

  2. Ved fejlsøgning skal du kopiere DllUsedByExtensionDll.dll til din Adobe AIR SDK bin-mappe, hvor Air Debug Launcher (adl) eksekverbar er placeret.



Du behøver ikke at pakke DllUsedByExtensionDll.dll i den ANE, du bygger. [2]


Problemet er, at ExtensionDll.dll ikke kan finde DllUsedByExtensionDll.dll, når den startes fra debuggeren, da den eksekverbare til debuggeren er placeret i AIR SDK. Når du har eksporteret udgivelsesbygningen, er din app den eksekverbare, så nu ser det ud til dll'en i sin rodmappe.


Hvis du vil debugere dette for at finde ud af mere om, hvad der kunne være forkert, foreslår jeg, at du kører din app ved hjælp af kommandolinjen ved hjælp af adl-kommandoen. [3]


For mig kørte gennem Flash Builder's debug/run, at jeg ikke kunne se Windows-fejlen 'programmet kan' t starte, fordi dll mangler fra din computer '. Og det led mig lang tid i en vild gåsejagt.

Andre referencer 1


Hvis din dll bruger andre dll'er, skal du også medtage referencen dll'er i projektet, hvor du vil bruge den ANE-fil.