Air Native Extensions: выпущенное приложение Air с Windows Native Extension отлично работает на ПК для разработки, но не на других компьютерах.

Я работаю над приложением AIR, в котором используется собственное расширение для окон, которое я разработал для того же проекта. Приложение вызывает метод ANE с именем pingFunction и передает ему строку, содержащую IP-адрес, по которому pingFunction выполнит, хотите верьте, хотите нет, пинг-тест.

Приложение и его ANE отлично работают в Flash Builder, и даже после его выпуска они продолжают прекрасно работать на ПК для разработки. Проблема в том, что я попробовал на двух других компьютерах, и приложение выдает следующую ошибку:

ArgumentError: Error #3500: The extension context does not have a method with the name pingFunction. 
at flash.external::ExtensionContext/_call() 
at flash.external::ExtensionContext/call() 
at com.mycompanyname.myappname::MyAppName/sendPing()[...  

Вначале я думал, что это связано с тем, что я использовал DLL, которую я скомпилировал с использованием конфигурации отладки в Visual Studio вместо конфигурации выпуска, потому что я читал, что иногда отладочная версия DLL может использовать внешние библиотеки DLL. . Итак, я изменил его и пересобрал всю библиотеку как релизную сборку. К сожалению для меня, я все еще испытываю тот же результат.

Кроме того, я попытался изменить swf-version приложения AIR и ANE на версию AIR SDK, которую я использую (14.0), и снова получил ту же ошибку.

Компьютер разработки работает под управлением Windows 8.1, а на других, где приложение не работает, — Windows 7 и Windows 7 с пакетом обновления 1.

Любые идеи о том, почему это происходит? Любые вопросы или комментарии, которые могут привести меня к правильному пути, будут глубоко оценены.


person Storo    schedule 08.06.2015    source источник
comment
DLL для Windows ANE должны находиться в той же папке, что и приложение, iirc.   -  person    schedule 08.06.2015
comment
@DodgerThud Привет, что ты имеешь в виду под «в той же папке»? Что должно быть в той же папке? Потому что ANE должен быть связан из папки libs, а остальная часть приложения находится в папке source.   -  person Storo    schedule 08.06.2015
comment
Я имею в виду место установки, где его устанавливает пользователь, в частности, папку, в которой находится .swf, я полагаю. По крайней мере, я так это помню, завтра поищу свой Windows ANE в офисе.   -  person    schedule 08.06.2015
comment
@DodgerThud Спасибо. Я был бы признателен, что. Но разве ANE не должен быть упакован с помощью Flash Builder и установлен автоматически?   -  person Storo    schedule 08.06.2015
comment
Да, именно так это «должно» работать, но я помню, что в Windows ANE было что-то немного другое. Хотя вместо этого это может быть для внешних DLL (например, DLL, созданных не вами).   -  person    schedule 08.06.2015
comment
Извини, приятель, я ничего не смог найти в своих проектах.   -  person    schedule 09.06.2015
comment
@DodgerThud Жалко, но все равно спасибо.   -  person Storo    schedule 09.06.2015


Ответы (1)


Ошибка № 3500 возникает из-за того, что на этих машинах не установлена ​​необходимая среда выполнения, необходимая для выполнения любого кода C++.
На вашем компьютере для разработки у вас установлена ​​Visual Studio и, следовательно, у вас также есть msvcr.

Решение задачи:

Установите msvcr, т. е. перераспределение Microsoft Visual C++ — 2012, с здесь .

вам нужен msvcr везде, где вы хотите запустить любой скомпилированный код C++ VS.


person not-a-robot    schedule 15.07.2015