作者TKyo (暗黑贵公子)
看板Programming
标题Re: 问 MFC 和 C# data type的问题 ?
时间Tue Jun 20 18:25:15 2006
※ 引述《[email protected] (放牧中 ~~)》之铭言:
: 我用 C# 引入一个 MFC写的 dll ,
: 这个 函式在 MFC 中的原型是这样的 :
: DWORD ProductString(DWORD, LPVOID S);
: 请问各位大大 , 我再引入时, LPVOID 这个型态我在 C# 中要用哪一个型态呢 ?
请用 IntPtr 型别
: [DllImport(CPDll, SetLastError = true, CharSet = CharSet.Auto)]
: internal static extern uint
: ProductString(ulong _NumDevices, (这边要怎麽写) DString);
ProductString(ulong _NumDevices, IntPtr DString);
---
底下是 MS$ C/C++ <-> MS$ C# 型别转换对照表
┌─────────────────┬──────────────────┐
│MS$ C/C++ │MS$ C# │
├─────────────────┼──────────────────┤
│HANDLE, LPDWORD, LPVOID, void* │IntPtr │
├─────────────────┼──────────────────┤
│LPCTSTR, LPCTSTR, LPSTR, char* │String [in] │
│const char*, Wchar_t*, LPWSTR │StringBuilder [in, out] │
├─────────────────┼──────────────────┤
│DWORD, unsigned long, Ulong │UInt32,[MarshalAs(UnmanagedType.U4)]│
├─────────────────┼──────────────────┤
│bool │bool │
├─────────────────┼──────────────────┤
│LP<struct> │[In] ref <struct> │
├─────────────────┼──────────────────┤
│SIZE_T │uint │
├─────────────────┼──────────────────┤
│LPDWORD │out uint │
├─────────────────┼──────────────────┤
│LPTSTR │[Out] StringBuilder │
├─────────────────┼──────────────────┤
│PULARGE_INTEGER │out ulong │
├─────────────────┼──────────────────┤
│WORD │uInt16 │
├─────────────────┼──────────────────┤
│Byte, unsigned char │byte │
├─────────────────┼──────────────────┤
│Short │Int16 │
├─────────────────┼──────────────────┤
│Long, int │Int32 │
├─────────────────┼──────────────────┤
│float │single │
├─────────────────┼──────────────────┤
│double │double │
├─────────────────┼──────────────────┤
│NULL pointer │IntPtr.Zero │
├─────────────────┼──────────────────┤
│Uint │Uint32 │
└─────────────────┴──────────────────┘
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.67.4.232