我需要一個C#接口通過CLI方言調用一些本地C++代碼。 C#接口在所需參數前面使用out屬性說明符。這轉換爲C++/CLI中的跟蹤引用。C++/CLI從跟蹤引用(本地)引用 - 包裝
我有以下的簽名和體(這是另一個調用本地方法做的工作)的方法:
virtual void __clrcall GetMetrics(unsigned int %width, unsigned int %height, unsigned int %colourDepth, int %left, int %top) sealed
{
mRenderWindow->getMetrics(width, height, colourDepth, left, top);
}
現在的代碼不會因爲一些編譯時錯誤編譯(全部爲與not being able to convert parameter 1 from 'unsigned int' to 'unsigned int &'
有關)。
作爲一名謙虛的C++程序員,對我來說,CLI看起來像荷蘭人,對德語的人來說。可以做些什麼來使這個包裝在CLI中正常工作?
感謝您的回覆,奇怪的是,它沒有編譯我第一次嘗試它(現在不是!編譯器錯誤)。是的,在C#界面中,參考參數的前面有_out_屬性。但是,這個解決方案只是把'%'跟蹤的ref操作符放在它們前面(這也是編譯器建議的做法 - 雖然我嘗試了System :: Runtime :: InteropServices :: Out屬性。問題是我需要將'width'傳遞給一個普通的本地C++例程,這是行不通的(請參閱我的關於轉換失敗的錯誤信息)乾杯! – teodron 2012-08-10 16:03:59
拳擊價值類型值是一個非常糟糕的想法,它也不能解決OP的問題 – 2012-08-10 16:53:40
回答更新(感謝@ HansPassant的建議和初步解釋)+1 – teodron 2012-08-13 13:17:37