2012-03-22 2 views
5

Структура моего файла АНХ выглядит следующим образом:Как использовать внешнюю Dll в Air Native Extension?

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

Если ExtensionDll.dll использует функции в другой Dll, расширение не будет загружаться. DllMain не вызывается. Похоже, что DllUsedByExtensionDll.dll не находится в пути поиска Dll, когда приложение Air использует расширение.

Как я могу заставить приложение найти дополнительные Dll, если я не хочу помещать их в какой-то общий путь Dll?

ответ

0

Если ваша dll использует другие dll, тогда включите ссылку dll в проект, где вы собираетесь использовать этот файл ANE.

+0

Ум ... как их включить? – BlueWanderer

6

У меня была такая же проблема, и я пошел на это несколько дней. Оказывается, есть два способа решить эту проблему.

  1. Export Release Build, при этом убедитесь, что DllUsedByExtensionDll.dll упакован в том же каталоге, что и ваш исполняемый файл.
  2. В целях отладки скопируйте файл DllUsedByExtensionDll.dll в каталог bin Adobe AIR SDK, где находится исполняемый файл Air Debug Launcher (adl).

Вам не нужно упаковать DllUsedByExtensionDll.dll в ANE, который вы строите.

Проблема заключается в том, что ExtensionDll.dll не может найти DllUsedByExtensionDll.dll, когда он запускается из отладчика, поскольку исполняемый файл для отладчика находится в AIR SDK. Однако, если вы экспортируете сборку релизов, ваше приложение является исполняемым, поэтому теперь он ищет DLL в своем корневом каталоге.

Если вы хотите отладить это, чтобы узнать больше о том, что может быть неправильно, я предлагаю вам запустить приложение по командной строке с помощью команды adl.

Для меня, работая с отладкой/запуском Flash Builder, я не мог видеть ошибку Windows, «программа не может запускаться, поскольку на вашем компьютере отсутствует DLL». И это привело меня к дикой гусиной погоне в течение длительного времени.

+1

Вместо копирования вы можете включить каталог, содержащий dll в '% PATH%'. См. Например, мой [сценарий запуска] (https://github.com/Ventero/FRESteamWorks/blob/master/test/bin-debug/runWin.bat). Не уверен, что это возможно в Flash Builder. – Ventero

Смежные вопросы