Calling UNIX and Linuxshared object file.so from c#(从 c# 调用 UNIX 和 Linux 共享对象文件 .so)
问题描述
有没有办法从 C# P/Invoke 调用用 C 编写并在 Unix 上构建的共享对象文件?
Is there a way for a Shared Object file written in C and built on Unix to be called from C# P/Invoke?
或者我需要使用 Java 或类似的东西吗?
Or do I need to use Java or something like that?
推荐答案
Mono 能够从基于 dlopen(3) 构建的 C# 中与本地库集成.您只需使用带有库名称的 DllImport 语句(即libform.so.5"),然后使用友好的 C# 类来包装本机代码和数据类型,该类负责处理所有低级内容.此页面 有一个很好的概述,其中包含有关如何处理封送指针和其他不安全类型的大量信息.
Mono has the ability to integrate with native libraries from within C# built on top of dlopen(3). You just have to use the DllImport statement with the name of the library (i.e. 'libform.so.5'), then wrap the native code and data types with a friendly C# class that takes care of all the low-level stuff. This page has a good overview with lots of information on how to deal with marshaling pointers and other unsafe types.
一旦你编写了你的包装类,你就可以直接使用它,而不必担心它在下面使用了一个本地共享库.
Once you've got your wrapper class written, you can just use that without worrying about the fact that it's using a native shared library underneath.
这篇关于从 c# 调用 UNIX 和 Linux 共享对象文件 .so的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:从 c# 调用 UNIX 和 Linux 共享对象文件 .so
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- 输入按键事件处理程序 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- C# 中多线程网络服务器的模式 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01