2

要导入GetAsyncKeyState()我正在使用的 API:

[DllImport("user32.dll")]
public static extern short GetAsyncKeyState(int vKey);

所有网页都给了我相同的代码,但是当我尝试编译编译器时会抛出:

预期的类、委托、枚举、接口或结构
修饰符“extern”对此项无效

我直接用命令行编译,但 Visual C# 也会抛出同样的错误。那么导入函数的正确方法是什么?

4

2 回答 2

6

这意味着您将声明放在代码的错误位置。它需要在一个类中,如下所示:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

// not here

namespace WindowsFormsApplication1
{

    // not here

    public partial class Form1 : Form
    {

        // put it INSIDE the class

        [DllImport("user32.dll")]
        public static extern short GetAsyncKeyState(int vKey);

        public Form1()
        {

            // not inside methods, though

            InitializeComponent();
        }

    }

}
于 2013-11-09T20:41:35.273 回答
4

编译器引发的错误很清楚。您应该将该声明放在一个类中:

namespace MyNameSpace
{
   public class MyClass
   {
      [DllImport("user32.dll")]
      public static extern short GetAsyncKeyState(int vKey);
   }
}

在这里您可以找到extern关键字的参考

于 2013-11-09T20:40:38.557 回答