2011-02-07 4 views
1

私はMac OS XでC#(モノラル)でアプリケーションを開発していますが、いくつかの関数と相互運用する必要がありますが、どうすればこのことができるのかわかりません。C#DllImport help(Mac OS)

私はDLLIMPORTを使用する必要があることを知っているが、私はこれを行うことができますかわからない、私はC言語で簡単なアプリを作りましたが、今私はC#で同じことを行う必要があります。..

機能私はC#で呼び出したいことは、このいずれかになります。

mach_vm_read(vm_map_t target_task, mach_vm_address_t address, mach_vm_size_t size, vm_offset_t *data. mach_msg_type_number_t *data_count); 

は、これらのファイルのいずれかで定義されている

#include <mach/mach.h> 
#include <mach/mach_vm.h> 

おかげ

+0

MacOS XのWin32 DLLから関数をインポートできますか?これが可能かどうかは非常に興味があります。私はMonoがCLRと.NETクラスライブラリのネイティブ実装に基づいていると考えました。 –

+1

私がインポートしたい機能は、Win32 DLLからではなく、MacOSライブラリからです.Mono Webサイトのどこかでリードして、DllImportを使用してアンマネージライブラリ(Win32ライブラリでない場合でも)を呼び出す必要があります。 Swigを使用してアンマネージコードの相互運用をお勧めしますが、私はそれを使う必要はないと思いますが、関数を呼び出すだけです。 – BraCa

答えて

1

あなたは、宣言ので(実際に呼び出したいあなたの方法される静的メソッドを提供するように、[DLLIMPORT()]属性を持つメソッド呼び出しを飾ることにより、C#でメソッドを呼び出すことができますし、 )は、戻り値の型を持っていない:

[DllImport("YourDll.dll")] 
public static extern void mach_vm_read(vm_map_t target_task, mach_vm_address_t address, mach_vm_size_t size, vm_offset_t *data. mach_msg_type_number_t *data_count); 
+0

すばやく答えることに感謝しますが、どのようにそれらのC構造体をマップできますか(vm_map_t 、mach_vm_address_t ...)をC#のクラスや何かに変換しますか? (申し訳ありませんが、私がそのようなことをしている場合..) – BraCa

+0

私はあなたがinteropについて読むべきだと思いますが、モノとマコックスで同じように動作するかどうかはわかりません。 – kubal5003

0

このページはあなたのために最も有用であることが起こっている:

Interop with Native Libraries

一般に、MonoのOS X/LinuxのP/Invokeは、Windowsの場合と同じように動作します。

+0

tks、それは助けました;) – BraCa