请问Brunhild 如果使用方法1,是不是要修改VC方面的接口? 我直接修改了C#这边的接口,可以编译,但运行的时候出现错误。 [DllImport("xxx.dll", EntryPoint="#4")] public static extern int aaa( IntPtr pBmpData, int nWidth, int nHeight);
我也做过相同的东西,vc里面是字节指针,C#里直接就用字节数组传进去就行了
请问Wangxt,您能说清楚一些么? 我上面的修改有没有问题?
把pBmpData定义成IntPtr就可以的.
贴个Api参数转换的参考给你The following table lists data types used in the Win32 API (listed in Wtypes.h) and C-style functions. Many unmanaged libraries contain functions that pass these data types as parameters and return values. The third column lists the corresponding .NET Framework built-in value type or class that you use in managed code. In some cases, you can substitute a type of the same size for the type listed in the table.Unmanaged type in Wtypes.h Unmanaged C language type Managed class name Description HANDLE void* System.IntPtr 32 bits BYTE unsigned char System.Byte 8 bits SHORT short System.Int16 16 bits WORD unsigned short System.UInt16 16 bits INT int System.Int32 32 bits UINT unsigned int System.UInt32 32 bits LONG long System.Int32 32 bits BOOL long System.Int32 32 bits DWORD unsigned long System.UInt32 32 bits ULONG unsigned long System.UInt32 32 bits CHAR char System.Char Decorate with ANSI. LPSTR char* System.String or System.StringBuilder Decorate with ANSI. LPCSTR Const char* System.String or System.StringBuilder Decorate with ANSI. LPWSTR wchar_t* System.String or System.StringBuilder Decorate with Unicode. LPCWSTR Const wchar_t* System.String or System.StringBuilder Decorate with Unicode. FLOAT Float System.Single 32 bits DOUBLE Double System.Double 64 bits For corresponding types in Visual Basic .NET, C#, and the Managed Extensions for C++, see the Introduction to the .NET Framework Class Library.
如果使用方法1,是不是要修改VC方面的接口?
我直接修改了C#这边的接口,可以编译,但运行的时候出现错误。
[DllImport("xxx.dll", EntryPoint="#4")]
public static extern int aaa(
IntPtr pBmpData,
int nWidth,
int nHeight);
我上面的修改有没有问题?
HANDLE void* System.IntPtr 32 bits
BYTE unsigned char System.Byte 8 bits
SHORT short System.Int16 16 bits
WORD unsigned short System.UInt16 16 bits
INT int System.Int32 32 bits
UINT unsigned int System.UInt32 32 bits
LONG long System.Int32 32 bits
BOOL long System.Int32 32 bits
DWORD unsigned long System.UInt32 32 bits
ULONG unsigned long System.UInt32 32 bits
CHAR char System.Char Decorate with ANSI.
LPSTR char* System.String or System.StringBuilder Decorate with ANSI.
LPCSTR Const char* System.String or System.StringBuilder Decorate with ANSI.
LPWSTR wchar_t* System.String or System.StringBuilder Decorate with Unicode.
LPCWSTR Const wchar_t* System.String or System.StringBuilder Decorate with Unicode.
FLOAT Float System.Single 32 bits
DOUBLE Double System.Double 64 bits For corresponding types in Visual Basic .NET, C#, and the Managed Extensions for C++, see the Introduction to the .NET Framework Class Library.