在.NET Core中是否有与DllImport等效的Linux?
Is there a Linux equivalent of DllImport in .NET Core?
我正在做一个.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( 手册页中,按以下顺序搜索程序所需的必要共享库:
- 用户的LD_LIBRARY_PATH环境变量中以冒号分隔的目录列表。这是允许 CLI 程序找到本机共享库的常用方法。
- 缓存在/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 更困难(。 /lib
- ,后跟/usr/lib。
更多细节可以在这里找到 库处理
编辑:
如果 DllImport 包含任何未解析的符号,则libc.so
导入将失败。请与
ldd -r -d libc.so
并确保那里没有未解析的符号。
相关文章:
- 在C++/Linux中设置单调时钟的一些技巧
- Linux的Cpp上的计时器
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如何在linux终端中同时编译和运行c++代码
- 在Linux for Windows上编译C++代码时出错
- 如何找到锁定Linux futex的C++行
- 在linux上调试巨大的C++项目
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- c++方法参数只能在linux的发布模式下自行更改
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- 这里在 Linux 中具有"CreatePipe"和"CreateProcessW"功能吗?
- 函数在Windows或Linux上运行时表现不同
- 在Linux下捕获SIGKILL的C++程序
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- mysql C++ connector [mysql-connector-c++-8.0.19-linux-glibc2
- 绕过 Windows 中的 __declspec(dllimport) 到 Linux 项目的转换
- 在.NET Core中是否有与DllImport等效的Linux?