在 AIR Native Extension 中包含库会导致错误,所有方法 "The extension context does not have a method with the name..."
Including library in AIR Native Extension causes the error, "The extension context does not have a method with the name..." for all methods
我正在为 Windows 桌面开发 AIR 本机扩展 (ANE)。此扩展的要点是能够调用第三方 C 库,该库由两个定义方法 signatures/typedefs 的 .h 文件和一个 .lib 文件组成。
在项目中包含第三方库之前,我首先确认我通过在刚刚创建的 dll 中使用一个简单的 "sayHello" 函数构建 ANE 来正确设置所有内容,并且 returns字符串.
确认我可以从我的 AIR 应用程序调用 sayHello 并获得响应后,我继续添加一个初始化第三方库的函数。这就是事情的发展方向。我的 dll 编译得很好,并且我能够无错误地打包 ANE,但是当我尝试从 AIR 调用任何 ANE 函数时,我收到以下错误:
"The extension context does not have a method with the name
..."
在 AIR 中,对 createExtensionContext()
的调用成功并且 returns 一个 ExtensionContext 对象,但我无法调用任何本机函数。更重要的是,Visual Studio 的调试器不再为我的 dll 加载符号 - dll 没有出现在模块 window 中,我无法在本机代码中设置断点。
如果我注释掉调用第三方库的初始化函数的那一行,那么一切都会再次正常工作——我可以调用我的所有函数并在 Visual Studio 中命中断点。
所以基本上,如果我将这个库编译到我的 dll 中,AIR 将无法加载它。什么会导致这个?
使用 ProcessMonitor,我发现第三方库依赖于外部 dll,但它没有找到。在创建 ExtensionContext 时,运行时显然会尝试解析 ANE 的依赖关系。由于找不到此 dll,ANE 的初始化函数失败了。在这种情况下,AIR 仍会创建一个 ExtensionContext 对象,但由于它从未成功初始化,因此它不知道其函数的名称和位置。
我正在为 Windows 桌面开发 AIR 本机扩展 (ANE)。此扩展的要点是能够调用第三方 C 库,该库由两个定义方法 signatures/typedefs 的 .h 文件和一个 .lib 文件组成。
在项目中包含第三方库之前,我首先确认我通过在刚刚创建的 dll 中使用一个简单的 "sayHello" 函数构建 ANE 来正确设置所有内容,并且 returns字符串.
确认我可以从我的 AIR 应用程序调用 sayHello 并获得响应后,我继续添加一个初始化第三方库的函数。这就是事情的发展方向。我的 dll 编译得很好,并且我能够无错误地打包 ANE,但是当我尝试从 AIR 调用任何 ANE 函数时,我收到以下错误:
"The extension context does not have a method with the name
..."
在 AIR 中,对 createExtensionContext()
的调用成功并且 returns 一个 ExtensionContext 对象,但我无法调用任何本机函数。更重要的是,Visual Studio 的调试器不再为我的 dll 加载符号 - dll 没有出现在模块 window 中,我无法在本机代码中设置断点。
如果我注释掉调用第三方库的初始化函数的那一行,那么一切都会再次正常工作——我可以调用我的所有函数并在 Visual Studio 中命中断点。
所以基本上,如果我将这个库编译到我的 dll 中,AIR 将无法加载它。什么会导致这个?
使用 ProcessMonitor,我发现第三方库依赖于外部 dll,但它没有找到。在创建 ExtensionContext 时,运行时显然会尝试解析 ANE 的依赖关系。由于找不到此 dll,ANE 的初始化函数失败了。在这种情况下,AIR 仍会创建一个 ExtensionContext 对象,但由于它从未成功初始化,因此它不知道其函数的名称和位置。