从CentOS中在mono下运行的.NET应用程序调用本地linux库时,无效的IL代码

时间:2018-07-20 17:56:59

标签: .net linux mono dllimport

我正在尝试在多平台环境中使用Intel MKL库。我的DllImports和包装器类在.NET / Windows下工作。但是,当我将其移植到CentOS时,会收到“无效的IL代码”。

我已将DLLImports更改为包括Linux版本的MKL(.so库)。我添加了LD_LIBRARY_PATH环境变量。尽管如此,该错误不会更改是否存在库。而且我没有得到DLLNotFound错误,我得到了无效的IL错误。

下面,我粘贴我的Windows,运行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
    );

1 个答案:

答案 0 :(得分:0)

最终,通过不使用__arg_list并使用Mono“ .config”文件解决了该问题