рдЕрдирд╡рд╛рдВрдЯреЗрдб рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛

рдпрд╣ рдЖрд▓реЗрдЦ рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд C рдХреЛрдб рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд C # рдХреЛрдб (.Net) рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рджрд┐рдЦреЗрдЧрд╛ред
рдПрдХ рдмрд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджрд┐рдпрд╛, рдпрд╛ рдлрд┐рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реНрд╡рдпрдВ рджреЛ рднрд╛рдЧ рд╢рд╛рдорд┐рд▓ рдереЗ: C рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ (рдЕрдирд╡рд╛рдВрдЯреЗрдб рдХреЛрдб) рдФрд░ C # (рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб) рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднрд╛рдЧред рдореЗрд░рд╛ рдХрд╛рдо рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд┐рдЦрдирд╛ рдФрд░ рдЗрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдерд╛ред

рдмрд╛рдж рдореЗрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЛ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЕрдкреНрд░рдмрдВрдзрд┐рдд - рдиреАрдЪреЗред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдкреА / рдЗрдирд╡реЛрдХ (рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЗрдирд╡реЛрдХ) рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ C # рдореЗрдВ рд╢реАрд░реНрд╖ рд╕реЗ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЛ Dll рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ DllImport рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдКрдкрд░ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрдВрддреНрд░ рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП - msdn.microsoft.com/en-us/library/aa288468 (v = рдмрдирд╛рдо 71) .asp

рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рджреМрд░рд╛рди, рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рд╣реБрдИ - рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдерд╛, рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдлрд▓ рдпрд╛ рдЕрд╕рдлрд▓ рд╕рдорд╛рдкрди рдХреЗ рдКрдкрд░реА рд╕реНрддрд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдпрд╛ рддреЛ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рд╕реЗ рдКрдкрд░реА рд╕реНрддрд░ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдкрдХреЛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдКрдкрд░реА рд╕реНрддрд░ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдм рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдорд╛рдирд╡ рд░рд╣рд┐рдд рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдЦреЛрдЬ рдлрд▓ рдирд╣реАрдВ рд╣реБрдИред рдлрд┐рд░ рднреА, рдпрд╣ рдереЛрдбрд╝рд╛ рд░рдХреНрдд рдХреЗ рд╕рд╛рде рдкрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдФрд░ рдкрд╣рд┐рдпрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред

рд╕рдордЭ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕рд╣рд┐рдд рдПрдХ рдирдпрд╛ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: рдПрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ (CallC) рдФрд░ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ (SharpForCall)ред

рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЦрд╛рд▓реА рд╕реА # рдкрд░рд┐рдпреЛрдЬрдирд╛ (рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓реАрдХреЗрд╢рди) рд╣реИ рдФрд░ рдХрд┐рд╕реА рдиреЗ рдПрдХ рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓рд┐рдЦреА рд╣реИ (рдореБрдЭреЗ рд╢реБрд░реВ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдЪ-рдлрд╛рдЗрд▓ рдХрд░рдирд╛ рдерд╛, рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ)ред C рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░ Dll рд╣реИ, рдЬреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ C # рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣рдорд╛рд░реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ .cpp рдлрд╝рд╛рдЗрд▓ рд╣реИ:

/**    */ typedef VOID (__stdcall * pResultCallBack)( int nStatus ); __declspec(dllexport) int FuncC(pResultCallBack pfResult, PVOID pContext) { // //  -  // /*       (C#)   */ pfResult(1); return 1; } 


рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдореИрдВ рдЗрд╕рдХрд╛ рдЕрд░реНрде рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдлрд╝рдВрдХреНрд╢рди (FuncC) C # рд╕рд╛рдЗрдб рдкрд░ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рдорд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдмрдЯрди рджрдмрд╛рддрд╛ рд╣реИ (рдЪрд▓реЛ рдпрд╣ рди рднреВрд▓реЗрдВ рдХрд┐ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ)ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди (C # рд╕рд╛рдЗрдб рдкрд░ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛) рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рджрд┐рдП рдЧрдП * .cpp рдлрд╝рд╛рдЗрд▓ (рдКрдкрд░ рджреЗрдЦреЗрдВ) рдореЗрдВ FuncC рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж pResultCallBack рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо C # рдкрд░ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╢реАрд░реНрд╖-рд╕реНрддрд░ рдХреА рдУрд░, pResultCallBack рдлрд╝рдВрдХреНрд╢рди (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, FuncCSharp, рдиреАрдЪреЗ рджреЗрдЦреЗрдВ), FuncC рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдЧрд╛ рдФрд░, рдЗрд╕рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ рд╕реНрдерд┐рддрд┐ рдХреЛрдб рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рдХреЙрд▓ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХреЙрд▓ рдХреЛ рджреЛрд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред рдбреАред)ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдорд╢реАрди (рдореЗрдЬрдмрд╛рди) рдХреЛ рджреВрд╕рд░реА рдорд╢реАрди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЗрдП рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░реЗрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЧреБрдг-> рд╕рд╛рдорд╛рдиреНрдп-> рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ C-sh рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдкрде рд▓рд┐рдЦреЗрдВред

рдЫрд╡рд┐

рджреВрд╕рд░реА рдмрд╛рдд, C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдореЗрдВ рдЬрд╛рдиреЗ рдФрд░ C- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдмреЙрдХреНрд╕ рдХреЛ рдЪреЗрдХ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред

рдЫрд╡рд┐

рдЕрдЧрд▓рд╛, рд╣рдо Import.cs рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо P / Invoke рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпрд╛рддрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред

 using System; using System.Runtime.InteropServices;//    namespace SharpForCall { class Import { [DllImport("CallC.dll", CallingConvention = CallingConvention.Cdecl)] public static extern int FuncC( [MarshalAs(UnmanagedType.FunctionPtr)] ResultCallBack pfResult, IntPtr pContext); } } 


рд╣рдо PVOID рдХреЛ IntPtr, рдФрд░ рд╕реВрдЪрдХ рдХреЛ ResultCallBack рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд╕рд╛рде pResultCallBack рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ Program.cs рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:

 using System; namespace SharpForCall { public delegate void ResultCallBack(Int32 nStatus); class Program { static void Main(string[] args) { ResultCallBack result = new ResultCallBack(FuncCSharp); IntPtr pContext = IntPtr.Zero; /*    Dll */ int nRes = Import.FuncC(result, pContext); } /**    . *   unmanaged . */ public static void FuncCSharp(Int32 nStatus) { if ( 1 == nStatus ) { //   } if ( 2 == nStatus ) { //   } //    return ; } } } 


рдЕрдм, рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж (рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рдореЗрдВ рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ -> рдбрд┐рдмрдЧ-> рдЕрдирд╡рд╛рдВрдЯреЗрдб рдХреЛрдб рдбреАрдмрдЧрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ), рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрд╣рд▓реЗ рдКрдкрд░реА рд╕реНрддрд░ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред ) рдкреНрд░рддрд┐рдирд┐рдзрд┐, рдФрд░ рдирд┐рдЪрд▓реЗ рдПрдХ - FuncC рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЙрд╕реА "рдбреЗрд▓рд┐рдЧреЗрдЯ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдКрдкрд░реА рдПрдХ (FuncCSharp рдлрд╝рдВрдХреНрд╢рди) рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, "1") рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдКрдкрд░реА рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдХрд╛рд╕ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ:

рдЫрд╡рд┐

, рддреЛ рд╣рдо __stdcall рдХреЙрд▓рдмреИрдХ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рд╕рд╛рдЗрдб C рдкрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рдпрджрд┐ рдпрд╣ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХрдХреНрд╖рд╛ рдЖрдпрд╛рдд рдореЗрдВ C # рддрд░рдл, рдЖрдкрдХреЛ DllImport рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп CallingConvention = CallingConvention.Cdecl рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрдЯреИрдХ рдХреЛ рдЙрд╕рдХреА рдореВрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЕрдм рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдЕрднреА рдкреВрд░рд╛ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдХрдИ рдЕрд╕рдВрднрд╡ рдорд╛рдирддреЗ рд╣реИрдВ - рд╣рдордиреЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЛ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕реЗ рдмреБрд▓рд╛рдпрд╛ред

рдкреБрдирд╢реНрдЪ: рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдХрд╛рдо рдЖрдПрдЧрд╛ред рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИ ...

Source: https://habr.com/ru/post/In130690/


All Articles