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

从C#调用UNIX和Linux共享对象文件.so

越琦
2023-03-14
问题内容

有没有办法用C#P / Invoke调用用C编写并在Unix上构建的共享对象文件?

还是我需要使用Java或类似的东西?


问题答案:

Mono具有从dlopen(3)之上构建的C#中与本机库集成的能力。您只需要使用带有库名称的DllImport语句(即“
libform.so.5”),然后使用友好的C#类包装本机代码和数据类型,即可处理所有低级内容。该页面具有很好的概述,其中包含有关如何处理封送处理指针和其他不安全类型的大量信息。

编写包装器类后,就可以使用它,而不必担心它在下面使用本机共享库的事实。



 类似资料:
  • 问题内容: 我试图从控制台开始调试我的应用程序。 然后在gdb中 我得到的输出: 系统配置如下: 问题答案: 您可以在gdb中使用该命令来更改gdb用于启动要调试的程序的环境。从gdb帮助中提取: 范例:

  • 问题内容: 我有一个二进制文件和一个共享库。共享库使用以下命令进行编译: 二进制文件使用以下命令进行编译: 我进去了 到输出路径。 从控制台调试工作正常: 但是,从Emacs22启动gdb失败,并显示以下消息: 启动程序:/ mnt / sda5 / Programming / main / src / mainx / mnt / sda5 / Programming / main / src /

  • 问题内容: 如何轻松找出ELF格式的Linux二进制文件的直接共享对象依赖关系? 我知道ldd工具,但这似乎可以输出二进制文件的所有依赖关系,包括二进制文件所依赖的任何共享对象的依赖关系。 问题答案: 您可以用来浏览ELF标头。将直接依赖项列为部分。

  • 问题内容: 该程序是Xenomai测试套件的一部分,可从Linux PC交叉编译为Linux + Xenomai ARM工具链。 编辑: 确定,我没有注意到.1结尾是文件名的一部分。那到底是什么意思呢? 问题答案: 更新 尽管下面我写的是关于共享库的一般答案,但我认为这类消息的最常见原因是因为您已经安装了一个软件包,但没有安装该软件包的“ -dev”版本。 好吧,这不是在说谎-该列表中没有任何内容

  • 问题内容: 这是使用g ++ 进行动态共享库编译的后续版本。 我正在尝试在Linux上的C++中创建一个共享的类库。当我尝试使用库中定义的类时,我的问题开始了。我链接到的第二篇教程展示了如何加载用于创建库中定义的类的对象的符号,但是没有_使用_ 这些对象来完成任何工作。 有谁知道用于创建共享C ++类库的更完整的教程,该教程还显示了如何在单独的可执行文件中 使用 这些类?一个非常简单的教程,显示了

  • 我的目标是在内部存储上创建一个XML文件,然后通过share Intent发送它。 我能够使用以下代码创建XML文件 我一直在尝试检索输出文件的Uri以共享它。我首先尝试通过将文件转换为Uri来访问该文件 此返回file:///data/data/com.my.package/files/myfile.xml但我似乎无法将此附加到电子邮件、上载等。 如果我手动检查文件长度,它是正确的,并显示有一个