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

JCC*_*CyC 5 c# linux mono dllimport monodevelop

我正在逐步了解Linux中的Mono开发.我正在尝试调用Linux C库.这页,在理论上,告诉我怎么样,但是当我输入的MonoDevelop 2.2.2(Fedora 13的),下面的代码,我得到一个"分析错误(CS8025)","私人静态外部INT GETPID();".而且,帮助系统不起作用.

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!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 15

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

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

  ...
}
Run Code Online (Sandbox Code Playgroud)

  • 实际上,你应该使用[DllImport("c")] mono来完成剩下的工作. (2认同)