如何在Air Native Extension中使用外部的Dll?
我ANE文件的结构如下:如何在Air Native Extension中使用外部的Dll?
<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路径中?
如果你的dll正在使用其他dll,那么在要使用该ANE文件的项目中包含参考dll。
我已经有同样的问题,并在这几天。原来有两种方法可以解决这个问题。
- 导出发布构建,同时确保DllUsedByExtensionDll.dll与您的可执行文件打包在同一目录中。
- 出于调试目的,将DllUsedByExtensionDll.dll复制到您的Adobe AIR SDK bin目录中,其中Air Debug Launcher (adl)可执行文件位于该目录中。
您不需要在您正在构建的ANE中打包DllUsedByExtensionDll.dll。
问题是由于调试器的可执行文件位于AIR SDK中,ExtensionDll.dll在从调试器启动时无法找到DllUsedByExtensionDll.dll。然而,一旦你导出发布版本,你的应用程序就是可执行文件,所以现在它在它的根目录下查找这个dll。
如果你想调试这个以便找到更多关于可能出错的信息,我建议你使用adl命令通过命令行运行你的应用程序。
对于我来说,运行Flash Builder的调试/运行意味着我看不到Windows错误“该程序无法启动,因为您的计算机缺少dll”。这导致我在很长一段时间内疯狂追逐。
而不是复制,你可以在你的'%PATH%'中包含包含dll的目录。看例如我的[运行脚本](https://github.com/Ventero/FRESteamWorks/blob/master/test/bin-debug/runWin.bat)。不知道在Flash Builder中是否可能。 – Ventero 2013-03-07 21:58:05
嗯......如何包含它们? – BlueWanderer 2012-04-17 13:58:29