当前位置: 首页 > 面试题库 >

如何在Java中使用Linux共享库?

慕鹏
2023-03-14
问题内容

有什么方法可以so从Java代码中调用库中的函数吗?通常,可以so在Java程序中使用Linux 库吗?


问题答案:

答案是“ JNI” :)

这里有几个链接:

  • 如何在Linux上为JNI应用程序编译动态库?

  • http://learn-from-the-guru.blogspot.com/2007/12/java-native-interface-jni-tutorial-hell.html

  • http://docs.oracle.com/javase/6/docs/technotes/guides/jni/



 类似资料:
  • 问题内容: 我有一个.so文件,我想在我的Go代码中调用其功能。 我该怎么做呢?我已经阅读了cgo和syscall软件包。它们接近我想要的位置,但是我看不到可以在.so文件中调用函数的任何地方。 我想确切地实现ctypes包在Python中的功能。 有人可以帮忙吗? 问题答案: 如果要使用在编译时静态已知的共享库,则可以简单地使用cgo。阅读有关如何准确执行此操作的文档,但是通常您会指定一些链接器

  • 问题内容: 我的一个项目有一个问题。 我一直在尝试找到一个记录良好的使用共享内存的示例,但没有成功。 基本上情况是,当用户启动程序时,我需要在共享内存中存储两个值: current_path( 它是一个 char )_ 和 file_name( 它也是 _char ) 。 根据命令参数,将启动一个新进程,该进程需要读取和修改存储在共享内存中的 current_path 变量,而 file_name

  • 问题内容: 我正在Linux下使用C ++开发共享库,并且我希望该库使用log4cxx进行日志记录。但是,我不确定该如何设置。为了使log4cxx正常工作,我需要创建一个记录器对象。我如何确保在加载库时创建了该对象? 我怀疑将记录器对象创建为全局变量,然后从我的库的任何源文件中使用它,在标头中将其声明为extern,将是最容易的。但是,一旦应用程序连接到库,如何自动创建记录器? 我知道在Windo

  • 问题内容: 注意到,创建一个可执行文件,我刚刚得到了奇怪的想法来检查时,我尝试运行它......好结果是发生了什么 段错误 我自己的库。因此,对此感到好奇,我试图“运行” glibc(在我的系统上)。果然,它没有崩溃,但是提供了一些输出: 所以我的问题是:这背后的魔力是什么?我不能只在库中定义符号-可以吗? 问题答案: 我写 了一篇 有关该主题的博客文章,在此我进行了更深入的介绍,因为我发现它很有

  • 问题内容: 两个共享库liba.so和libb.so。liba.so使用libb.so。所有c文件都使用-fPIC编译。链接使用- shared。当我们在liba.so上调用dlopen时,它无法在libb.so中找到符号…我们得到“未定义符号”错误。我们可以dlopen libb.so没有错误。我们知道liba正在找到libb,因为我们没有得到文件未找到错误。删除libb.so时,出现文件未找到

  • 问题内容: Windows提供了用于应用程序和DLL版本信息的资源文件。资源文件包括版本,版权和制造商等信息。 我们有一个共享库,并且喜欢添加版本信息。我们如何在带有共享库的Linux上做到这一点? 问题答案: 简短的版本是您通过库的名称执行此操作。阅读http://tldp.org/HOWTO/Program- Library-HOWTO/shared-libraries.html的 第3章以及