2011-02-07 107 views
1

我開發在Mac OS X的應用程序在C#(單聲道),我需要一些功能互操作,但我不知道我該怎麼做..C#的DllImport幫助(Mac OS)中

我做了一個在C簡單的應用程序,但現在我需要做同樣的在C#中,我知道,我應該使用的DllImport,但我不知道我該怎麼做..

功能我想在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類庫的本地實現? – 2011-02-07 00:30:04

+1

那麼,我想導入的函數不是來自Win32 DLL,它來自MacOs庫,我在Mono網站的某個地方使用DllImport來調用非託管庫(即使它們不是Win32庫),它們還建議使用Swig與非託管代碼進行交互,但我認爲我不需要使用它,我只需要調用一個函數.. – BraCa 2011-02-07 00:37:16

回答

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#中的東西? (對不起,如果我是這樣一個noob ..) – BraCa 2011-02-07 00:38:39

0

本頁面將是最對您有用:

Interop with Native Libraries

一般而言,Mono中的OS X/Linux上的P/Invoke就像在Windows上一樣工作。