锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
//c++:Byte(unsigned char) ---- c#:System.Byte
//c++:SHORT(short) ---- c#:System.Int16
//c++:WORD(unsigned short) ---- c#:System.UInt16
//c++:INT(int) ---- c#:System.Int16
//c++:INT(int) ---- c#:System.Int32
//c++:UINT(unsigned int) ---- c#:System.UInt16
//c++:UINT(unsigned int) ---- c#:System.UInt32
//c++:LONG(long) ---- c#:System.Int32
//c++:ULONG(unsigned long) ---- c#:System.UInt32
//c++:DWORD(unsigned long) ---- c#:System.UInt32
//c++:DECIMAL ---- c#:System.Decimal
//c++:BOOL(long) ---- c#:System.Boolean
//c++:CHAR(char) ---- c#:System.Char
//c++:LPSTR(char *) ---- c#:System.String
//c++:LPWSTR(wchar_t *) ---- c#:System.String
//c++:LPCSTR(const char *) ---- c#:System.String
//c++:LPCWSTR(const wchar_t *) ---- c#:System.String
//c++:PCAHR(char *) ---- c#:System.String
//c++:BSTR ---- c#:System.String
//c++:FLOAT(float) ---- c#:System.Single
//c++:DOUBLE(double) ---- c#:System.Double
//c++:VARIANT ---- c#:System.Object
//c++:PBYTE(byte *) ---- c#:System.Byte[]
//c++:BSTR ---- c#:StringBuilder
//c++:LPCTSTR ---- c#:StringBuilder
//c++:LPCTSTR ---- c#:string
//c++:LPTSTR ---- c#:[MarshalAs(UnmanagedType.LPTStr)] string
//c++:LPTSTR 杈撳嚭鍙橀噺鍚?nbsp; ---- c#:StringBuilder 杈撳嚭鍙橀噺鍚?nbsp;
//c++:LPCWSTR ---- c#:IntPtr
//c++:BOOL ---- c#:bool
//c++:HMODULE ---- c#:IntPtr
//c++:HINSTANCE ---- c#:IntPtr
//c++:緇撴瀯浣?nbsp; ---- c#:public struct 緇撴瀯浣搟};
//c++:緇撴瀯浣?**鍙橀噺鍚?nbsp; ---- c#:out 鍙橀噺鍚?nbsp;
//C#涓彁鍓嶇敵鏄庝竴涓粨鏋勪綋瀹炰緥鍖栧悗鐨勫彉閲忓悕
//c++:緇撴瀯浣?&鍙橀噺鍚?nbsp; ---- c#:ref 緇撴瀯浣撳彉閲忓悕
//c++:WORD ---- c#:ushort
//c++:DWORD ---- c#:uint
//c++:DWORD ---- c#:int
//c++:UCHAR ---- c#:int
//c++:UCHAR ---- c#:byte
//c++:UCHAR* ---- c#:string
//c++:UCHAR* ---- c#:IntPtr
//c++:GUID ---- c#:Guid
//c++:Handle ---- c#:IntPtr
//c++:HWND ---- c#:IntPtr
//c++:DWORD ---- c#:int
//c++:COLORREF ---- c#:uint
//c++:unsigned char ---- c#:byte
//c++:unsigned char * ---- c#:ref byte
//c++:unsigned char * ---- c#:[MarshalAs(UnmanagedType.LPArray)] byte[]
//c++:unsigned char * ---- c#:[MarshalAs(UnmanagedType.LPArray)] Intptr
//c++:unsigned char & ---- c#:ref byte
//c++:unsigned char 鍙橀噺鍚?nbsp; ---- c#:byte 鍙橀噺鍚?nbsp;
//c++:unsigned short 鍙橀噺鍚?nbsp; ---- c#:ushort 鍙橀噺鍚?nbsp;
//c++:unsigned int 鍙橀噺鍚?nbsp; ---- c#:uint 鍙橀噺鍚?nbsp;
//c++:unsigned long 鍙橀噺鍚?nbsp; ---- c#:ulong 鍙橀噺鍚?nbsp;
//c++:char 鍙橀噺鍚?nbsp; ---- c#:byte 鍙橀噺鍚?nbsp;
//C++涓竴涓瓧絎︾敤涓涓瓧鑺傝〃紺?C#涓竴涓瓧絎︾敤涓や釜瀛楄妭琛ㄧず
//c++:char 鏁扮粍鍚峓鏁扮粍澶у皬] ---- c#:MarshalAs(UnmanagedType.ByValTStr, SizeConst = 鏁扮粍澶у皬)]
public string 鏁扮粍鍚? ushort
//c++:char * ---- c#:string
//c++:char * ---- c#:StringBuilder
//浼犲嚭鍙傛暟
//c++:char *鍙橀噺鍚?nbsp; ---- c#:ref string 鍙橀噺鍚?nbsp;
//c++:char *杈撳嚭鍙橀噺鍚?nbsp; ---- c#:[MarshalAs(UnmanagedType.LPStr)] StringBuilder 杈撳嚭鍙橀噺鍚?nbsp;
//c++:char ** ---- c#:string
//c++:char **鍙橀噺鍚?nbsp; ---- c#:ref string 鍙橀噺鍚?nbsp;
//c++:const char * ---- c#:string
//c++:char[] ---- c#:string
//c++:char 鍙橀噺鍚峓鏁扮粍澶у皬] ---- c#:[MarshalAs(UnmanagedType.ByValTStr,SizeConst=鏁扮粍澶у皬)] public string 鍙橀噺鍚?
//c++:int ---- c#:int
//c++:int ---- c#:ref int
//c++:int & ---- c#:ref int
//c++:int * ---- c#:ref int
//C#涓皟鐢ㄥ墠闇瀹氫箟int 鍙橀噺鍚?= 0;
//c++:*int ---- c#:IntPtr
//c++:int32 PIPTR * ---- c#:int32[]
//c++:float PIPTR * ---- c#:float[]
//c++:double** 鏁扮粍鍚?nbsp; ---- c#:ref double 鏁扮粍鍚?nbsp;
//c++:double*[] 鏁扮粍鍚?nbsp; ---- c#:ref double 鏁扮粍鍚?nbsp;
//c++:long ---- c#:int
//c++:ulong ---- c#:int
//c++:UINT8 * ---- c#:ref byte
//C#涓皟鐢ㄥ墠闇瀹氫箟byte 鍙橀噺鍚?= new byte();
//c++:handle ---- c#:IntPtr
//c++:hwnd ---- c#:IntPtr
//c++:void * ---- c#:IntPtr
//c++:void * user_obj_param ---- c#:IntPtr user_obj_param
//c++:void * 瀵硅薄鍚嶇О ---- c#:([MarshalAs(UnmanagedType.AsAny)]Object 瀵硅薄鍚嶇О
//c++:char, INT8, SBYTE, CHAR ---- c#:System.SByte
//c++:short, short int, INT16, SHORT ---- c#:System.Int16
//c++:int, long, long int, INT32, LONG32, BOOL , INT ---- c#:System.Int32
//c++:__int64, INT64, LONGLONG ---- c#:System.Int64
//c++:unsigned char, UINT8, UCHAR , BYTE ---- c#:System.Byte
//c++:unsigned short, UINT16, USHORT, WORD, ATOM, WCHAR , __wchar_t ---- c#:System.UInt16
//Struct闇瑕佸湪C#閲岄噸鏂板畾涔変竴涓猄truct
//CallBack鍥炶皟鍑芥暟闇瑕佸皝瑁呭湪涓涓鎵橀噷錛宒elegate static extern int FunCallBack(string str);
//unsigned char** ppImage鏇挎崲鎴怚ntPtr ppImage
//int& nWidth鏇挎崲鎴恟ef int nWidth
//int*, int&, 鍒欓兘鍙敤 ref int 瀵瑰簲
//鍙岄拡鎸囩被鍨嬪弬鏁幫紝鍙互鐢?ref IntPtr
//鍑芥暟鎸囬拡浣跨敤c++: typedef double (*fun_type1)(double); 瀵瑰簲 c#:public delegate double fun_type1(double);
//char* 鐨勬搷浣渃++: char*; 瀵瑰簲 c#:StringBuilder;
//c#涓嬌鐢ㄦ寚閽?鍦ㄩ渶瑕佷嬌鐢ㄦ寚閽堢殑鍦版柟 鍔?unsafe
]]>
鐜錛歭inux
緙栬瘧鍣細gcc
婧愮爜錛歨ello.c
2
3 int main()
4 {
5 printf("hello, world\n");
6 }
:~$ gcc -o hello hello.c
1銆?婧愮爜鏂囦歡hello.c 閫氳繃棰勫鐞嗗櫒->淇敼榪囩殑婧愮爜鏂囦歡hello.i
2銆? hello.i 閫氳繃緙栬瘧鍣?>姹囩紪浠g爜hello.s
3銆? hello.s 閫氳繃姹囩紪鍣?>嫻姩鏂囦歡hello.o
4銆? hello.o+printf.o 閫氳繃榪炴帴鍣?>鍙墽琛屾枃浠?span style="color: #0000ff;">hello銆?/span>
1銆?strong>棰勫鐞嗛樁孌?/strong> 棰勫鐞嗗櫒(cpp)鏍規嵁#鍚庨潰鐨勬寚浠や慨鏀規簮浠g爜銆備緥錛?span style="color: #0000ff;">hello.c涓殑#include <stdio.h> 鍛戒護鍛婅瘔棰勫鐞嗗櫒鎶婄郴緇熷ご鏂囦歡stdio.h鎻掑叆鍒扮▼搴忎腑鐢熶駭鍙﹀涓涓狢紼嬪簭錛屼竴鑸悗緙鍚嶄負.i銆?br />
2銆?strong>緙栬瘧闃舵 緙栬瘧鍣?cc1)鎶?span style="color: #0000ff;">hello.i鏂囦歡杞寲鎴愭眹緙栦唬鐮?span style="color: #0000ff;">hello.s鏂囦歡銆?br />
3銆?strong>姹囩紪闃舵 姹囩紪鍣紙as錛夋妸hello.s杞寲鎴愭満鍣ㄨ璦鎸囦護嫻姩鏂囦歡紼嬪簭hello.o銆?/span>
4銆?strong>榪炴帴闃舵 hello紼嬪簭璋冪敤浜嗘爣鍑咰搴損rintf鍑芥暟銆傝繛鎺ュ櫒(ld)鎶?span style="color: #0000ff;">printf.o鍜宧ello.o榪炴帴鎴?span style="color: #0000ff;">hello鍙墽琛屾枃浠躲?img src ="http://m.shnenglu.com/chinapeter2008/aggbug/176011.html" width = "1" height = "1" />
]]>
瀵筂essageBoxA鍑芥暟榪涜鐨勬柇鐐規嫻嬶細
FARPROC Uaddr;
BYTE Mark = 0;
(FARPROC&) Uaddr = GetprocAddress ( LoadLibrary("user32.dll"), "MessageBoxA");
Mark = *((BYTE*)Uaddr); //鍙朚essageBoxA鍑芥暟絎竴瀛楄妭
if(Mark == 0xCC)
return TRUE;
]]>
]]>
{
TCHAR szBuffer[1024];
va_list pArgList;
va_start(pArgList, szFormat);
_vsntprintf(szBuffer, sizeof(szBuffer)/sizeof(TCHAR), szFormat, pArgList);
va_end(pArgList);
return MessageBox(NULL, szBuffer, szCaption, 0);
}
]]>
WinMain(
HINSTANCE hInstance, //鎵ц瀹炰綋浠e彿
HINSTANCE hPrevInstance, //鍒ゆ柇鑷韓鐨勫叾浠栨墽琛屽疄浣撴槸鍚︽鍦ㄨ繍琛岋紙32浣嶅厓Windows鐗堟湰錛岃姒傚康宸茶鎶涘純銆傝鍙傛暟鍊兼繪槸涓篘ULL 0錛?br /> LPSTR lpCmdLine, //鐢ㄤ簬鎵ц紼嬪簭鐨勫懡浠ゅ垪
int nShowCmd //紼嬪簭鏈鍒濇樉紺烘柟寮?br />);
姝ゅ嚱鏁板湪WINBASE.H涓湁澹版槑
WinMain鍑芥暟澹版槑涓鴻繑鍥炰竴涓猧nt鍊箋俉INAPI鏍囪瘑絎﹀湪WINDEF.H瀹氫箟 #defina WINAPI __stdcall
WINDEF.H 鍩烘湰鍨嬫佸畾涔?br />WINNT.H 鏀寔Unicode鐨勫瀷鎬佸畾涔?br />WINBASE.H Kernel鍑芥暟
WINUSER.H 鐢ㄦ埛鎺ュ彛鍑芥暟
WINGDI.H 鍥懼艦璁懼鎺ュ彛鍑芥暟
]]>
搴撶被鍨?br>綾葷被鍨?br>鍙橀噺
琛ㄨ揪寮?br>璇彞
鍑芥暟
]]>