zhangcao132 2022-09-29 16:38 采纳率: 0%
浏览 36
已结题

Linux中mono环境下c#调用dll

问题遇到的现象和发生背景

在linux系统中,安装有mono环境,运行c#的exe时,无法加载dll动态文件

用代码块功能插入代码,请勿粘贴截图

以下为简答的控制台程序,dllimport一个dll文件,

namespace linux_csharp_frame
{
    internal class Program
    {
        public class Test
        {
            [DllImport("linuxdll.dll", CallingConvention = CallingConvention.Cdecl)]
            public static extern int Sum(int a, int b);
        }
        static void Main(string[] args)
        {
            Console.WriteLine(Test.Sum(666, 666));
        }
    }
}

###### 运行结果及报错内容 
提示dllnotfound异常

```bash
Unhandled Exception:
System.DllNotFoundException: linuxdll assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) linux_csharp_frame.Program+Test.Sum(int,int)
  at linux_csharp_frame.Program.Main (System.String[] args) [0x00001] in <d887b5261b3e40c0b3913ca2d1acb55b>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.DllNotFoundException: linuxdll assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) linux_csharp_frame.Program+Test.Sum(int,int)
  at linux_csharp_frame.Program.Main (System.String[] args) [0x00001] in <d887b5261b3e40c0b3913ca2d1acb55b>:0 
我的解答思路和尝试过的方法

我将linuxdll这个文件放在exe目录下,也放在/usr/lib中,也编辑了/etc/mono/config中加入dll map,以及写了xxx.exe.config里面的configuture
我是参考的 https://www.mono-project.com/docs/advanced/pinvoke/ 这里,可能阅读水平不够,不理解里面讲的

我想要达到的结果

怎么加载运行呀

  • 写回答

2条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 10月7日
      • 创建了问题 9月29日

      悬赏问题

      • ¥15 Java的运用111111111111
      • ¥15 koa2 + ts 声明文件不生效
      • ¥15 Mac系统word显示此文档已被删除或当前无法访问.
      • ¥15 Unity用代码实现Tilemap
      • ¥15 怎么求广播地址以及网络地址?
      • ¥15 想知道unity如何实现物体贴地运动
      • ¥15 从A地到B地有多条路径可以到达,现要从A地到B地运物资问题
      • ¥30 用java设计小游戏扑克牌比大小,52张牌的图片选世界篮球明星图或其它都行
      • ¥15 ATM管理员功能代码及解释
      • ¥15 EasyExcel导出下载文件响应流为空