2009-10-28 99 views
-1

我導入一些dll來創建實況視頻。這裏myprob是我有C++代碼,如在c#中創建HWND

int PLAYER_SDK_SPEC CreatePlayer(HWND hWndParent,RECT & rectPlayer,const char * szWndTitle);

在c#

我有進口DLL等

[的DllImport( 「PlayerLib」)] 公共靜態外部INT的createPlayer(IntPtr的手柄,矩形RECT,StringBuilder的szWndTitle);

我打電話那功能像 CreatePlayer(this.Handle,rect,str6);

,但它產生一些未處理的異常...請幫我解決這個概率 由於事先

回答

1

我不認爲的P/Invoke聲明是正確的。從我知道它應該是:

[DllImport("PlayerLib")] 
public static extern int CreatePlayer(IntPtr Handle, ref Rectangle RECT, String szWndTitle); 

原始版本需要對矩形的引用,所以你應該這樣做。此外,我不確定Rectangle類型和RECT類型的C++是否相等。也許你必須在C#中聲明一個struct RECT

看看pinvoke.net。在那裏你會發現一些函數也會帶上RECT的參數,你會在那裏找到關於如何將一個矩形傳遞給C++函數的提示。