我有以下的本機C函數聲明,我想轉換到VB.NET的P/Invoke相當於以叫它:編組陣列作爲返回值P/Inoke .NET
unsigned char *h5d65bv(const unsigned char *a, const int alen)
,你可以看到它,它返回一個字節數組,並將另一個字節數組a和它的長度(alen)作爲參數。
我用下面的簽名,根據.NET錯誤(「管理在‘返回值’/非託管簽名不匹配。」),這是不正確的:
<DllImport("mydll.dll", EntryPoint:="h5d65bv", BestFitMapping:=False, CallingConvention:=CallingConvention.Cdecl, ThrowOnUnmappableChar:=True, CharSet:=CharSet.Ansi)> _
Friend Function h5d65bv(ByVal a As Byte(), <MarshalAs(UnmanagedType.I4)> ByVal alen As Int32) As Byte()
End Function
那麼,哪一個是正確的「簽名」(它必須與數組和指針有關,但我沒有在因特網上找到關於數組的任何東西,如返回類型)?
像'h5d65bv'這樣的名字是一個非常強烈的暗示,你將面臨很多麻煩。 – 2014-08-31 09:42:24