2010-02-24 34 views
0

的P/Invoke在x64空引用例外的P/Invoke在x64空引用例外

我得到空引用例外,當我嘗試編譯在.NET代碼64,使得使用平臺調用服務來調用非託管代碼在dll中。我在這裏錯過了很明顯的東西嗎

例如來電

Private Declare Function waveOutOpen Lib "winmm.dll" (ByRef lphWaveOut As Int32, ByVal uDeviceID As Int32, ByRef lpFormat As WAVEFORMATEX, ByVal dwCallback As WaveDelegate, ByVal dwInstance As Int32, ByVal dwFlags As Int32) As Int32 

在失敗:

完整的代碼在這裏: waveout sometimes memory issue

+1

您需要提供更多關於您嘗試撥打的P/Invoke代碼的詳細信息。你的P/I簽名是什麼樣的? – 2010-02-24 17:37:20

回答

0

沒有非託管的dll的64位版本。 32位版本被調用,當然事情並不真正對齊?

2

你可能需要使用一堆int(固定大小的32位),實際上IntPtr(大小取決於平臺)將需要?

+0

也許這可能是它 – PeanutPower 2010-02-24 17:56:58