如何在Air Native Extension中使用外部Dll?

时间:2012-03-22 13:43:05

标签: windows flash dll air air-native-extension

我的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 个答案:

答案 0 :(得分:7)

我遇到了同样的问题,并在此过了几天。原来有两种方法可以解决这个问题。

  1. 导出版本构建,同时确保将DllUsedByExtensionDll.dll打包在与可执行文件相同的目录中。
  2. 出于调试目的,将DllUsedByExtensionDll.dll复制到Air Debug Launcher (adl)可执行文件所在的Adobe AIR SDK bin目录中。
  3. 您无需在正在构建的ANE中打包DllUsedByExtensionDll.dll。

    问题是,当从调试器启动时,ExtensionDll.dll无法找到DllUsedByExtensionDll.dll,因为调试器的可执行文件位于AIR SDK中。然而,一旦导出发布版本,您的应用程序就是可执行文件,所以现在它在根目录中查找dll。

    如果您想调试此内容以便找到有关可能出错的更多信息,我建议您使用adl命令通过命令行运行您的应用。

    对我来说,运行Flash Builder的调试/运行意味着我无法看到Windows错误“程序无法启动,因为您的计算机缺少dll”。这让我长时间陷入疯狂的追逐中。

答案 1 :(得分:0)

如果你的dll正在使用其他dll,那么在你要使用该ANE文件的项目中包含引用dll。