Как использовать внешнюю Dll в Air Native Extension? - PullRequest
6 голосов
/ 22 марта 2012

Структура моего ANE-файла выглядит следующим образом:

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

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

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

Ответы [ 2 ]

7 голосов
/ 07 марта 2013

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

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

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

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

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

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

0 голосов
/ 17 апреля 2012

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

...