.net - 从 CentOS 中单声道下运行的 .NET 应用程序调用本机 linux 库时,IL 代码无效
问题描述
我正在尝试在多平台环境中使用英特尔 MKL 库。我的 DllImports 和包装类在 .NET/Windows 下工作。但是,当我将它移植到 CentOS 时,我得到“无效的 IL 代码”。
我已更改 DLLImports 以包含 MKL 的 linux 版本(一个 .so 库)。我添加了 LD_LIBRARY_PATH 环境变量。尽管如此,无论库是否存在,错误都不会改变。而且我没有收到 DLLNotFound 错误,我收到了无效的 IL 错误。
下面我粘贴我的窗口,工作 dllimport 语句。
[DllImport("mkl_rt.dll", ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
internal static extern int DftiCreateDescriptor(
ref IntPtr handle_descriptor,
int precision,
int domain,
int dime,
int size
);
现在这就是我想出的 linux
[DllImport("libmkl_rt.so", CallingConvention = CallingConvention.Cdecl)]
private static extern int DftiCreateDescriptor(
ref IntPtr handle_descriptor,
int precision,
int domain,
int dime,
int size
);
解决方案
最终,这通过不使用 __arg_list 并使用 Mono “.config” 文件来解决
推荐阅读
- ios - Xcode gRPC-Core 错误:找不到“openssl_grpc/ssl.h”文件
- javascript - 检测是否所有内容都加载到单页应用程序中
- ruby-on-rails - 在帮助程序中使用实例变量是一种不好的做法吗?
- github - 加入团队后克隆或分叉项目
- algorithm - 为什么我们要在 Boyer-Moore 算法中模式的最后一个匹配字符中加 1?
- html - 如何使用 - Display :Grid 制作响应式网格
- javascript - Nuxtjs如何在为组件导入css文件时为npm run generate配置webpack?
- xamarin - Xamarin Android 目标版本
- javascript - AWS DynamoDB JavaScript SDK 的返回值未定义
- python - 如何使用 Azure 新闻搜索 API 搜索旧新闻数据