你如何直接调用从DLL导出的本机函数?

时间:2012-04-12 11:07:07

标签: c#

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

3 个答案:

答案 0 :(得分:2)

这是Microsoft example

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声明,请观看此帖子:Generate C# DLLImport declarations from a native dll

答案 1 :(得分:2)

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

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

然后打电话

 GetForegroundWindow()

好像在类

中定义

答案 2 :(得分: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()使用静态和外部修饰符声明,并具有DllImport属性,该属性告诉编译器实现来自 user32.dll ,使用默认值 MessageBoxA 的名称。

参考this link