Hallo an alle,
ich hab da ein Problem mit dem iport einer C++ DLL. Die deklaration der function bringt mir immer wieder einen Fehler:
System.Runtime.InteropServices.MarshalDirectiveException wurde nicht behandelt.
Message="return value kann nicht gemarshallt werden: Ungültige verwaltete/nicht verwaltete Typenkombination.."
Ich versuche diese Function aus einer C++ Dll zu importieren, die Beschreibung der funktion ist:
extern MPEGDLL_API HJPEGTRANSCODER __stdcall MPEG_InitJPEGTranscoder( int iUseYOnly);
extern MPEGDLL_API unsigned char* __stdcall MPEG_JPEGTranscodeFrame(HJPEGTRANSCODER hTransCtx, unsigned char *pucMPEGEncodedBuffer, int iInputBuffSize, int *piOutSize);
in VB.Net habe ich den iport so gemacht:
<DllImport("MPEGDLL.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function MPEG_InitJPEGTranscoder(ByVal iUseYOnly As Int32) As Integer
End Function
<DllImport("MPEGDLL.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function MPEG_JPEGTranscodeFrame(ByVal hndw As Integer, <MarshalAs(UnmanagedType.LPArray)> ByVal MPEGBuffer() As Byte, ByVal iInputBuffSize As Int32, ByVal piOutSize() As Byte) As Byte()
End Function
Wie muss ich den MPEG_JPEGTranscodeFrame deklarieren damit es klappt ? ich habe schon verschiede Versionen versucht, als Integer als String... aber es kommt immer wieder der gleiche fehler.
*piOutSize ist ein pointer der die grösse des Byte array enthält der fon der Function zuruck gegeben wird.
Kann mir jemand helfen das zu lösen.
Vielen dank
CU Online
ich hab da ein Problem mit dem iport einer C++ DLL. Die deklaration der function bringt mir immer wieder einen Fehler:
System.Runtime.InteropServices.MarshalDirectiveException wurde nicht behandelt.
Message="return value kann nicht gemarshallt werden: Ungültige verwaltete/nicht verwaltete Typenkombination.."
Ich versuche diese Function aus einer C++ Dll zu importieren, die Beschreibung der funktion ist:
extern MPEGDLL_API HJPEGTRANSCODER __stdcall MPEG_InitJPEGTranscoder( int iUseYOnly);
extern MPEGDLL_API unsigned char* __stdcall MPEG_JPEGTranscodeFrame(HJPEGTRANSCODER hTransCtx, unsigned char *pucMPEGEncodedBuffer, int iInputBuffSize, int *piOutSize);
in VB.Net habe ich den iport so gemacht:
<DllImport("MPEGDLL.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function MPEG_InitJPEGTranscoder(ByVal iUseYOnly As Int32) As Integer
End Function
<DllImport("MPEGDLL.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function MPEG_JPEGTranscodeFrame(ByVal hndw As Integer, <MarshalAs(UnmanagedType.LPArray)> ByVal MPEGBuffer() As Byte, ByVal iInputBuffSize As Int32, ByVal piOutSize() As Byte) As Byte()
End Function
Wie muss ich den MPEG_JPEGTranscodeFrame deklarieren damit es klappt ? ich habe schon verschiede Versionen versucht, als Integer als String... aber es kommt immer wieder der gleiche fehler.
*piOutSize ist ein pointer der die grösse des Byte array enthält der fon der Function zuruck gegeben wird.
Kann mir jemand helfen das zu lösen.
Vielen dank
CU Online