在我的程序中,我有一些DllImport
,因爲我想調用一些本機API。 int
類型用於返回類型的方法參數&。直到我在新的Windows 2012 R2服務器(64位)上運行我的應用程序之前,它工作得很好。當我將ref
參數的類型中的一個從int
更改爲IntPtr
時,問題得到解決。我們可以用DllImport方法簽名中的「IntPtr」替換所有「int」參數和返回類型嗎?
我知道IntPtr
是用來表示一個指針或句柄。 但是,MSDN也表示IntPtr
是「設計爲一個整數」,其大小是平臺特定的。因此,如果IntPtr
能夠處理平臺特定大小的整數,是否可以將所有int
參數&返回類型替換爲IntPtr
?
我正在使用C#.NET 4.0。
它可能會工作,但正確的方法是在msdn上查找方法的簽名,然後檢查類型概述tqble以查看具有本機大小的類型概述。 – CodesInChaos