-1

如何直接调用从 DLL 导出的本机函数?有人可以给我一个小例子吗?

4

3 回答 3

2

取决于你到底想要什么......我的代码中有这样的东西,但这使用了 Win32 API dll

[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

然后打电话

 GetForegroundWindow()

好像在类中定义

于 2012-04-12T11:10:38.710 回答
2

这是微软的例子

class PlatformInvokeTest
{
    [DllImport("msvcrt.dll")]
    public static extern int puts(string c);
    [DllImport("msvcrt.dll")]
    internal static extern int _flushall();

    public static void Main() 
    {
        puts("Test");
        _flushall();
    }
}

如果您需要从本机 dll 生成 C# DLLImport 声明,请观看这​​篇文章:从本机 dll 生成 C# DLLImport 声明

于 2012-04-12T11:09:09.257 回答
1

DllImport下面是该属性的一个简单示例:

using System.Runtime.InteropServices;
class C
{
    [DllImport("user32.dll")]
    public static extern int MessageBoxA(int h, string m, string c, int type);
    public static int Main()
    {
        return MessageBoxA(0, "Hello World!", "Caption", 0);
    }
}

此示例显示了声明在本机 DLL 中实现的 C# 方法的最低要求。该方法C.MessageBoxA()使用 static 和 external 修饰符声明,并具有使用默认名称MessageBoxADllImport告诉编译器实现来自user32.dll的属性。

参考这个链接

于 2012-04-12T11:09:26.993 回答