Метод в качесте параметра
Например:
Код:
public static extern int Init(сюда_метод);
Если же надо передавать именно имя метода, то тут Reflection тебе в помощь. Так что уточни, что именно хочешь получить, ну а пример не заставит долго ждать ;-)
DLL точно не на C# и не на .NET. То ли на C, то ли на Assembler.
Телепатов тут нет. Напиши хотя бы прототип функции из DLL.
Делается примерно так:
Код:
[SIZE=2][COLOR=#0000ff][FONT=Courier New]public [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]delegate [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]int [/COLOR][/SIZE][SIZE=2][COLOR=#008080]SomeDelegate[/COLOR][/SIZE][SIZE=2](); [/SIZE][SIZE=2][COLOR=#008000]//в виде делегата должен быть прототип функции, которую надо передавать
[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]DllImport[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"myNativeLib.dll"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New])][/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]extern [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=2] NativeFunction([[/SIZE][SIZE=2][COLOR=#008080]MarshalAs[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].FunctionPtr)] SomeFunction pFunc);[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] SomeFunction()[/FONT]
[FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] Console[/COLOR][/SIZE][SIZE=2].WriteLine([/SIZE][SIZE=2][COLOR=#800000]"hello, world"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]);[/FONT][/SIZE]
[SIZE=2][SIZE=2][COLOR=#0000ff][FONT=Courier New] return[/FONT][/COLOR][/SIZE][SIZE=2][FONT=Courier New] 0;[/FONT]
[/SIZE][FONT=Courier New]}[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] Main([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New][] args)[/FONT]
[FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] SomeDelegate[/COLOR][/SIZE][SIZE=2] sd = [/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#008080]SomeDelegate[/COLOR][/SIZE][SIZE=2](SomeFunction); [/SIZE][SIZE=2][COLOR=#008000]//экземляр делегата
[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] NativeFunction(sd); [/FONT][/SIZE][SIZE=2][COLOR=#008000][FONT=Courier New]//передаём функцию SomeFunction в параметр[/FONT]
[/COLOR][/SIZE][FONT=Courier New][SIZE=2]}
[/SIZE][/FONT]
[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]DllImport[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"myNativeLib.dll"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New])][/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]extern [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=2] NativeFunction([[/SIZE][SIZE=2][COLOR=#008080]MarshalAs[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].FunctionPtr)] SomeFunction pFunc);[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] SomeFunction()[/FONT]
[FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] Console[/COLOR][/SIZE][SIZE=2].WriteLine([/SIZE][SIZE=2][COLOR=#800000]"hello, world"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]);[/FONT][/SIZE]
[SIZE=2][SIZE=2][COLOR=#0000ff][FONT=Courier New] return[/FONT][/COLOR][/SIZE][SIZE=2][FONT=Courier New] 0;[/FONT]
[/SIZE][FONT=Courier New]}[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] Main([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New][] args)[/FONT]
[FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080] SomeDelegate[/COLOR][/SIZE][SIZE=2] sd = [/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#008080]SomeDelegate[/COLOR][/SIZE][SIZE=2](SomeFunction); [/SIZE][SIZE=2][COLOR=#008000]//экземляр делегата
[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] NativeFunction(sd); [/FONT][/SIZE][SIZE=2][COLOR=#008000][FONT=Courier New]//передаём функцию SomeFunction в параметр[/FONT]
[/COLOR][/SIZE][FONT=Courier New][SIZE=2]}
[/SIZE][/FONT]
Если функция принимает нетипизированный указатель на метод (void* ), тогда тип параметра Native-функции будет System.Delegate.