我正在进行一个.NET Core项目。这个项目应该可以在Linux上无问题运行。不过,我需要调用用C++创建的库。传统上,C#开发者使用DllImport&DllExport来实现这一点。
然而,在生产环境中,我不想导入或导出dll文件。在那里它需要在Linux上运行。是否有Linux版本的DllImport/DllExport? 在Linux上,使用so文件代替dll文件。当涉及到底层事物时,我并不聪明,因此我寻求快速解决方案和清晰的示例。类似于"SoImport"这样的东西吗?
我正在进行一个.NET Core项目。这个项目应该可以在Linux上无问题运行。不过,我需要调用用C++创建的库。传统上,C#开发者使用DllImport&DllExport来实现这一点。
然而,在生产环境中,我不想导入或导出dll文件。在那里它需要在Linux上运行。是否有Linux版本的DllImport/DllExport? 在Linux上,使用so文件代替dll文件。当涉及到底层事物时,我并不聪明,因此我寻求快速解决方案和清晰的示例。类似于"SoImport"这样的东西吗?
您可以在DllImport中使用.so文件。
[DllImport ("libc.so")]
private static extern int getpid ();
从dlopen(3)手册页可以看出,程序所需的共享库按以下顺序进行搜索:
有关详细信息,请参见library handling
编辑:
如果libc.so
包含任何未解决的符号,则DllImport将失败。请验证。
ldd -r -d libc.so
确保该处没有未解决的符号。