DllImport不能像Mono中宣传的那样工作(Linux,C#)

时间:2010-08-27 16:00:20

标签: c# linux mono dllimport monodevelop

我正在逐步了解Linux中的Mono开发。我正在尝试调用Linux C库。理论上,This page告诉我如何,但是当我在MonoDevelop 2.2.2(Fedora 13)中键入下面的代码时,我在“private static extern int getpid();中得到了一个”解析错误(CS8025)“。 ”。此外,帮助系统不起作用。

using System;
using System.Runtime.InteropServices;

[DllImport("libc.so")]
private static extern int getpid();

namespace LinuxCaller
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Console.WriteLine ("Hello World!");
        }
    }
}

2 个答案:

答案 0 :(得分:15)

函数定义不能出现在C#的命名空间范围内。这包括DLL导入定义。要解决此问题,只需将函数定义移到类型中即可。

class MainClass {
  [DllImport("libc.so")]
  private static extern int getpid();

  ...
}

答案 1 :(得分:2)

如果您只需要访问一些常见的* nix系统调用,请查看Mono.Unix命名空间,该命名空间提供了许多函数的包装。

http://www.go-mono.com/docs/index.aspx?link=N%3aMono.Unix