0
當我有一個由C庫具有以下簽名導出的函數:ExecutionEngineException拋出調用本機代碼
extern "C" BOOL Func()
該函數聲明在VB.NET代碼:
<DllImport("mylib.dll", CallingConvention:=CallingConvention.Cdecl)>
Private Shared Function Func() As Boolean
End Function
問題是,當我從.NET代碼調用函數時,我得到一個ExecutionEngineException。
鑑於BOOL
在此C代碼中的類型定義爲int
,該聲明應該不同嗎?如果是這樣,我應該如何聲明這一點?至於Short
或Int32
?我需要編組返回值嗎?
這是否意味着我需要這樣做:Private Shared Function Func()As Boolean –
2010-10-17 04:07:23
是的。但這不是你的問題,非託管代碼正在破壞堆。 – 2010-10-17 10:15:31
嗨漢斯,當你說'已損壞的代碼正在銷燬堆'時,你是在談論託管堆?我能做些什麼來避免這種情況?我應該在非託管代碼中尋找什麼?據我所知,它似乎沒有做任何破壞性的事情,比如分配和銷燬數組。 – 2010-10-17 17:30:06