System.LoadLibrary 在运行期间或由用户控制
System.LoadLibrary during runtime or controlled by user
是否可以通过 UI 事件加载本机库以响应用户交互?例如,按钮单击等调用 System.LoadLibrary(file_chosen_dynamically) 或条件加载(在 CLI 的情况下)也许一个很好的例子就像文件选择器 select dll/so 文件
据我了解,这是在 class 实例化时完成的。我可以根据需要调用 System.LoadLibrary 还是需要使用 class 加载程序?
所有平台都一样吗(Android/Desktop)
Is it possible to load a native library in response to user interaction by means of UI event?
从技术上讲,是的。
From what I understand, this is done when the class instantiates.
这是正常的方法。您通常将 loadLibrary
调用放入 static
块中,以便在 class 初始化时执行。
Can I just call System.LoadLibrary as desired or do I need to use class loader?
是(技术上)
没有。 class 加载程序不需要/不需要参与。
我说“技术上”,因为在 static
初始化程序块之外的其他地方调用 loadLibrary
存在实际问题。
调用 loadLibrary
的主要效果是 native
方法声明将“绑定”到相应的本机代码实现。如果您在 class 初始化时调用 loadLibrary
,那么您几乎可以保证在调用本机方法之前绑定已经发生。但是,如果您在另一个时间调用 loadLibrary
(在 class 初始化之后),则存在某些代码在绑定到其实现之前调用本地方法的风险。这将触发 Error
... 游戏几乎结束了。
所以...与其交互式地选择一个 DLL,我认为你最好在 DLL 和 Java classes 之间建立一对一的关系,然后交互式地选择一个 class 使用 Class.forName
.
加载
Is this the same with all platforms (Android/Desktop)
我相信是的...
是否可以通过 UI 事件加载本机库以响应用户交互?例如,按钮单击等调用 System.LoadLibrary(file_chosen_dynamically) 或条件加载(在 CLI 的情况下)也许一个很好的例子就像文件选择器 select dll/so 文件
据我了解,这是在 class 实例化时完成的。我可以根据需要调用 System.LoadLibrary 还是需要使用 class 加载程序?
所有平台都一样吗(Android/Desktop)
Is it possible to load a native library in response to user interaction by means of UI event?
从技术上讲,是的。
From what I understand, this is done when the class instantiates.
这是正常的方法。您通常将 loadLibrary
调用放入 static
块中,以便在 class 初始化时执行。
Can I just call System.LoadLibrary as desired or do I need to use class loader?
是(技术上)
没有。 class 加载程序不需要/不需要参与。
我说“技术上”,因为在 static
初始化程序块之外的其他地方调用 loadLibrary
存在实际问题。
调用 loadLibrary
的主要效果是 native
方法声明将“绑定”到相应的本机代码实现。如果您在 class 初始化时调用 loadLibrary
,那么您几乎可以保证在调用本机方法之前绑定已经发生。但是,如果您在另一个时间调用 loadLibrary
(在 class 初始化之后),则存在某些代码在绑定到其实现之前调用本地方法的风险。这将触发 Error
... 游戏几乎结束了。
所以...与其交互式地选择一个 DLL,我认为你最好在 DLL 和 Java classes 之间建立一对一的关系,然后交互式地选择一个 class 使用 Class.forName
.
Is this the same with all platforms (Android/Desktop)
我相信是的...