c# - DllImport 不能像在 Mono 中宣传的那样工作(Linux、C#)

标签 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!");
        }
    }
}

最佳答案

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

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

  ...
}

关于c# - DllImport 不能像在 Mono 中宣传的那样工作(Linux、C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3586023/

相关文章:

c - X11 在移动窗口和调整窗口大小时进行干预

Linux 网络服务器上的 ASP.NET

c# - 图形对象制作空白图像

c# - Entity Framework 代码生成策略 - Nullable varchar 与 Non-Nullable varchar

linux - 使用分隔符拆分字符串

linux - 磁盘莫名填满

c# - 使用 Mono 的 mcs 使用 Tuple 编译代码

c# - 尝试在 Linux 上使用 Mono 编译 x64 应用程序会出现 PE32Plus 错误?

c# - 如何将零附加到已经具有二进制值的数组

c# - 如何在循环中使用 UdpClient.BeginReceive