问题标签 [dynamic-loading]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3854 浏览

flash - 使用 Adob​​e AIR 构建插件架构

我正在考虑选择 Adob​​e AIR 作为即将到来的项目的客户端实施技术。(之前的选择是 C# 和 WPF,但最近我对 Flash/Flex/AIR 印象深刻。)

但我的产品最重要的特性之一将是它的插件架构,它允许第三方开发人员以有趣的方式扩展功能和 GUI。

我知道如何在 C# 中设计架构:插件加载器将枚举本地“app/plugins/”目录中的所有程序集。对于每个程序集,它会枚举所有类,寻找“IPluginFactory”接口的实现。对于工厂创建的每个插件,我会询问它的 MVC 类,并将其 GUI 元素(菜单项、面板等)插入现有 GUI 布局中的适当插槽中。

我想在 AIR 中完成同样的事情(从本地文件系统加载插件,而不是从网络加载插件)。阅读本文后,我的理解是这是可能的,并且基本架构(将 SWF 加载到沙盒应用程序域等)与您在 .NET 中执行的方式非常相似。

但我对这些问题很好奇。

如果你们中的任何人使用 flash 播放器进行了任何动态类加载(最好在混合 flash/flex 应用程序中,特别是在 AIR 主机中),我很想听听您构建插件框架的经验以及遇到棘手情况的地方使用 flash 播放器,以及使用 flash、flex 和 AIR API。

例如,如果有人问我同样的问题,但考虑到 Java 平台,我肯定会提到 JVM 没有“模块”或“程序集”的概念。最高级别的聚合是“类”,因此很难在插件系统中创建组织结构来管理大型项目。我还将讨论多个类加载器的问题,以及每个类加载器如何维护自己的加载类的单独实例(具有自己的单独静态变量)。


以下是一些对我来说仍然没有答案的具体问题:

1) 动作脚本“Loader”类可以将 SWF 加载到 ApplicationDomain。但是那个 appdomain 到底包含什么?模块?上课?MXML 组件是如何表示的?如何找到所有实现我的插件接口的类?

2)如果您已将插件加载到与主应用程序不同的 ApplicationDomain 中,那么从该其他应用程序域中调用代码是否会更加复杂?对于可以通过跨应用程序域编组层的数据类型是否有任何重要限制?编组是不是非常昂贵?

3) 理想情况下,我想将我自己的大部分主代码开发为插件(主应用程序只不过是一个插件加载外壳),并使用插件架构将该功能提升到应用程序中。是不是让你心里产生了恐惧?

0 投票
2 回答
367 浏览

verilog - 可以在 VHDL 中完成动态可插拔模块吗?

在c(嵌入式)中,可以通过定义函数指针表和模块可以加载到的地址范围来实现插件。

这需要链接器指令来分配空间并定义函数表的位置。

HDL / VHDL或Verilog中是否有类似的机制。

我想我在想的是在 FPGA 中定义一个门块以用于我的扩展功能,定义它将连接到的端口,然后能够将逻辑加载到该块中以执行特定操作。

这必须在运行时进行,因为 FPGA 是交付插件的通信系统的一部分。

0 投票
3 回答
1830 浏览

javascript - 如何从 JavaScript 中止加载外部 HTML 资源?

我正在编写一个 JavaScript 小部件,它旨在用于其他网站并从我自己的网站加载其他脚本文件(由于跨域限制,这基本上意味着没有 XHR)。现在我想优雅地处理故障 - 如果一个脚本无法加载,我想从备用服务器加载脚本。

我设法处理了第一台服务器返回错误的服务器故障,但我也想处理超时 - 如果第一台服务器响应时间过长,我想中止负载并切换到备用服务器。

我遇到的问题是我可以设置超时来触发切换到备用服务器的方法,但是在浏览器本身对原始请求超时之前,来自备用服务器的脚本不会成功加载 - 这也是渴望我的需要。

我希望能够 - 当第一个 <script> 标记正在加载时 - 中止加载,并添加第二个 <script> 指向备用服务器的标记。

我尝试将原始脚本的 src 属性设置为 null,甚至使用 removeNode() 从 HEAD 元素中删除标签,但没有效果。

这一切都在 Firefox 上尝试过——我还没有尝试过 IE,但解决方案必须在两者上都有效。我很想听听任何建议。

0 投票
5 回答
367 浏览

java - 包括 Java 类并在运行时运行它们

我有一个需要“插件”接口的 Java 项目。我正在考虑加载某种具有默认方法的类文件,例如initialize()shutdown()在将类加载到应用程序后将调用该类文件。这是这样做的方法吗?我将如何解决这个问题?

0 投票
5 回答
19635 浏览

c++ - C++ 中 dlsym() 和 dlopen() 的替代方案

我有一个应用程序,其中一部分使用共享库。这些库在编译时链接。
在运行时,加载程序期望共享对象在 中LD_LIBRARY_PATH,如果没有找到整个应用程序崩溃并出现错误“无法加载共享库”。请注意,不能保证客户端将拥有该库,在这种情况下我想要应用程序留下合适的错误消息,独立部分也应该正常工作。

为此,我正在使用dlsym()dlopen()使用共享库中的 API。这样做的问题是,如果我在 API 中有很多函数,我必须单独使用dlsym()和 ptrs 访问它们,这在我的情况下会导致内存损坏和代码崩溃。

有没有其他选择?

0 投票
1 回答
198 浏览

c# - 如何扫描目录中的程序集并加载它们?

我想扫描目录中尚未在项目中引用的任何程序集,然后加载实现 IMyInterface 的类的所有实例。

我知道Assembly.LoadFile方法可以帮助我,但我如何确定我正在加载的程序集是否已经被静态引用?我不想两次加载任何程序集。

0 投票
4 回答
863 浏览

actionscript-3 - 当一个 SWF 动态加载另一个 SWF 文件时,如何使两个 SWF 文件中使用的 Action Script 3 类解析为同一个类?

背景

我正在使用纯 Action Script 3 开发一个高度模块化的应用程序(我们使用 Flex 4 SDK 来自动化我们的构建,但我们所有的代码都必须能够直接在 Flash CS4 Professional 中编译)。

我们有一个“framework.swc”文件,其中包含在所有模块之间共享的接口定义,我们有一个加载其他模块的“mainmodule.swf”,然后我们有其他模块的各种 .swf 文件。我们使用 Loader 类,结合 ApplicationDomain::getDefinition() 动态加载类[我们使用“new LoaderContext(false,ApplicationDomain.currentDomain)”]。

问题

我们所有的模块都实现了在“framework.swc”中定义的“AbstractModule”接口。但是,当我实例化一个动态加载的模块时,(module is AbstractModule) 返回 false。更重要的是,如果我调用 module.someMethod(someobject),其中 someobject 实现了“framework.swc”中定义的接口,并且模块的方法需要“framework.swc”中定义的相同接口的对象,我会收到运行时错误“TypeError:错误 #1034:类型强制失败:无法将 _ 转换为 _。”

似乎“mainmodule.swf”和“loadedmodule.swf”(我一直在加载以进行测试的模块)在内部对“framework.swc”中的共享接口使用单独的定义

问题

如何使“mainmodule.swf”和“loadedmodule.swf”将它们的公共接口解析为共享定义,以便类转换和类比较正确成功?

0 投票
2 回答
5105 浏览

javascript - 当元素滚动到视图中时加载内容

我在具有静态高度和样式的<div>元素中有一个搜索结果列表。overflow: auto;我只想加载前 x 个搜索结果(例如 20 个),并在用户滚动到包含搜索结果的元素底部时加载另一个 x 结果。

谁能向我解释我将如何做到这一点?我找到了一些示例,但所有这些都使用整个文档的滚动值,而不是单个<div>. 如果重要的话,我正在使用 jQuery。

0 投票
6 回答
3019 浏览

c++ - 在 C++ 中禁用自动 DLL 加载

我的场景如下:我的应用程序依赖于某个 DLL(我在链接期间使用它的 lib)。但是,当我的应用程序执行时,我想使用 LoadLibrary 显式加载该 DLL。但是,默认情况下,当代码到达需要该 DLL 的范围时,环境会自动查找它,然后加载它。我想禁用这种行为,而且我关心的是,如果应用程序达到了它想要执行属于该 DLL 的代码的程度,我更喜欢它会崩溃而不是自动加载它(所以 DLL 只会被加载因为我明确地调用了 LoadLibrary)。
同时,我正在使用延迟加载功能(因此只有在实际需要加载 DLL 时才会触发加载)。但是,如果尚未加载 DLL,我希望应用程序会崩溃。

也许这里的任何人都熟悉实现这一目标的方法?

0 投票
1 回答
2035 浏览

c# - 检测并动态加载已安装的 Microsoft Word 对象库

一点背景故事:我有一个小型应用程序,它将使用 Word 根据 Word 模板和公司活动目录中的数据生成 Outlook 签名。它在装有 Office 2007 的计算机上运行良好,因为我在自己的计算机上编码时使用了“Microsoft Word 12.0 对象库”。

不过,网络上有不少安装了 Office 2003 的计算机,并且在这些计算机上缺少“Microsoft Word 12.0 对象库”,导致左右出现异常。

我的问题是:如何检测安装了哪个版本的 Office,从而检测到哪个版本的“Microsoft Word 对象库”可用,然后加载它。我很确定我正在使用的功能在“Microsoft Word 12.0 对象库”和“Microsoft Word 11.0 对象库”中。

如果有人感兴趣,这是我当前用于生成签名的代码:

任何帮助都感激不尽。也欢迎输入上面的代码;我没有任何针对 Office 互操作库进行编码的经验,因此我确信我可以做一些不同的事情。

最好的问候,埃吉尔。