2012-02-06 66 views
2

我有一個本地類,它需要構造函數中的函數指針。我試圖搜索論壇,但無法找到我正在尋找的東西。將Visual C++委託傳遞給本機C++類

天然類看起來是這樣的:

class NativeClass{ 
    NativeClass(std::string(*callback)(std::string args)){ 
    //native code goes here 
    } 
}; 

什麼是傳遞一個委託的最佳方式?任何幫助將不勝感激。

+0

我已經寫了兩個簡單的函數,完美地從託管字符串轉換爲unmaged std :: string。調用unmanged函數我沒有問題。我正在努力的是函數指針位。 – aggregate1166877 2012-02-06 20:56:21

+0

那麼這是否意味着'string'在這裏__does__或__ doesn't__意味着'std :: string'? – ildjarn 2012-02-06 20:58:28

+0

我編輯並將字符串更改爲std :: string。所以是的,它**是** std :: string。那不是重點。如果需要,我可以轉換。我需要幫助的是代表部分。 – aggregate1166877 2012-02-06 21:01:49

回答

3

您需要使用Marshal.GetFunctionPointerForDelegate()來實現此目的。

請注意,這將返回一個使用stdcall調用約定的函數指針。您可以通過在委託聲明中使用UnmanagedFunctionPointer屬性來指定不同的調用約定。