2012-03-22 24 views
5

Struktura moim pliku ANE wygląda następująco:Jak korzystać z zewnętrznego Dll w Air Native Extension?

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

Jeśli ExtensionDll.dll korzysta z funkcji w innych dll, rozszerzenie nie będzie ładować. DllMain nie jest wywoływany. Wygląda na to, że DllUsedByExtensionDll.dll nie znajduje się w ścieżce wyszukiwania biblioteki DLL, gdy aplikacja lotnicza używa tego rozszerzenia.

jaki sposób należy dokonać aplikacja znaleźć dodatkowych bibliotek dll, jeśli nie chcę, aby umieścić je w jakiejś wspólnej drogi Dll?

Odpowiedz

0

Jeśli dll używa innych bibliotek DLL następnie obejmować dll odniesienia w projekcie, gdzie masz zamiar użyć tego pliku ANE.

+0

Um ... jak je uwzględnić? – BlueWanderer

6

Miałem ten sam problem i poszedłem na to przez kilka dni. Okazało się, że są dwa sposoby rozwiązania tego problemu.

  1. Export Release Build, jednocześnie upewniając się, że DllUsedByExtensionDll.dll pakowany jest w tym samym katalogu, co plik wykonywalny.
  2. Dla celów debugowania, skopiuj do swojego DllUsedByExtensionDll.dll Adobe AIR SDK katalogu bin, gdzie Air Debug Launcher (adl) wykonywalny znajduje.

Nie trzeba pakować biblioteki DllUsedByExtensionDll.dll w tworzonej ANE.

Problem polega na tym, że program ExtensionDll.dll nie może znaleźć pliku DllUsedByExtensionDll.dll po uruchomieniu go z debugera, ponieważ plik wykonywalny debuggera znajduje się w zestawie SDK środowiska AIR. Jednak po wyeksportowaniu wersji release twoja aplikacja jest plikiem wykonywalnym, więc teraz szuka biblioteki dll w katalogu głównym.

Jeśli chcesz debugować to, aby uzyskać więcej informacji na temat tego, co może być nie tak, sugeruję uruchomienie aplikacji przy użyciu wiersza polecenia przy użyciu polecenia adl.

Dla mnie działa poprzez debugowania Flash Builder jest/run oznaczało, że nie mogłem zobaczyć błąd w systemie Windows „program nie może uruchomić z powodu dll brakuje komputera”. I to doprowadziło mnie do długiego gonitwy przez długi czas.

+1

Zamiast kopiowania, możesz dołączyć katalog zawierający bibliotekę DLL w '% PATH%'. Zobacz na przykład mój [run script] (https://github.com/Ventero/FRESteamWorks/blob/master/test/bin-debug/runWin.bat). Nie wiem, czy jest to możliwe w programie Flash Builder. – Ventero