DllImport 无法像 Mono 中宣传的那样工作(Linux、C#)

发布于 2024-09-16 10:19:51 字数 591 浏览 4 评论 0原文

我正在逐步了解 Linux 中的 Mono 开发。我正在尝试调用 Linux C 库。 此页面理论上告诉我如何操作,但是当我在 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!");
        }
    }
}

I'm getting to know Mono development in Linux, in baby steps. I'm trying to call Linux C libraries. This page, in theory, tells me how, but when I type the code below in MonoDevelop 2.2.2 (Fedora 13), I get a "Parsing Error (CS8025)" in "private static extern int getpid();". Moreover, the help system doesn't work.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡莣 2024-09-23 10:19:51

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

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

  ...
}

Function definitions cannot appear in the namespace scope in C#. This includes DLL import definitions. To fix this just move the function definition inside a type.

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

  ...
}
早茶月光 2024-09-23 10:19:51

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

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

If you just need to access some common *nix system calls, check out the Mono.Unix namespace which provides wrappers around a lot of functions.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文