在.NET Core中是否有与DllImport等效的Linux?

Is there a Linux equivalent of DllImport in .NET Core?

本文关键字:Linux DllImport Core NET 是否      更新时间:2023-10-16

我正在做一个.NET Core项目。这应该在 Linux 上运行没有问题。但是,我需要调用已使用 C++ 创建的库。传统上,C# 开发人员使用 DllImport&DllExport 执行此操作。

但是,我不想在生产环境中导入或导出 dll。在那里,它需要在Linux上运行。是否有 Linux 等效的 DllImport/DllExport?在 Linux 上,所以使用文件而不是 dll 文件。当涉及到低级的事情时,我并不聪明,所以我寻找一个快速的解决方案和一个清晰的例子。类似于"SoImport"的东西?

您也可以在 DllImport 中使用 .so 文件。

[DllImport ("libc.so")]
private static extern int getpid ();

在 dlopen(3( 手册页中,按以下顺序搜索程序所需的必要共享库:

  1. 用户的LD_LIBRARY_PATH环境变量中以冒号分隔的目录列表。这是允许 CLI 程序找到本机共享库的常用方法。
  2. 缓存在/etc/ld.so.cache./etc/ld.so.cache 中的库列表是通过编辑/etc/ld.so.conf 并运行 ldconfig(8( 创建的。编辑/etc/ld.so.conf 是搜索其他目录的首选方法,而不是使用 LD_LIBRARY_PATH,因为这更安全(将木马库放入/etc/ld.so.cache 比将其插入 LD_LIBRARY_PATH 更困难(。
  3. /lib
  4. ,后跟/usr/lib。

更多细节可以在这里找到 库处理

编辑:

如果 DllImport 包含任何未解析的符号,则libc.so导入将失败。请与

ldd -r -d libc.so

并确保那里没有未解析的符号。