-1

DLLからエクスポートされたネイティブ関数を直接呼び出すにはどうすればよいですか?誰かが私に小さな例を教えてもらえますか?

4

3 に答える 3

2

これはMicrosoftの例です:

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 に答える
2

正確に何が欲しいかによります...私のコードにはこのようなものがありますが、これはWin32APIdllを使用します

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

その後、電話するだけ

 GetForegroundWindow()

クラス内で定義されているかのように

于 2012-04-12T11:10:38.710 に答える
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()は静的修飾子と外部修飾子を使用して宣言され、属性があります。この属性は、デフォルト名のMessageBoxADllImportを使用して、実装がuser32.dllからのものであることをコンパイラーに通知します。

このリンクを参照してください

于 2012-04-12T11:09:26.993 に答える