Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

C³ÌÐò´«¸øC#³ÌÐòÊý¾Ý°üµÄÎÊÌâ.

ÎÊÌâ: C#³ÌÐòÀïÃæ¿ÉÒÔÊÕµ½C³ÌÐò´«À´µÄÊý¾Ý°ü.µ«ÊÇÿ´ÎÖ»ÓÐÒ»¸öBYTE.ÎÞÂÛC³ÌÐòÀïÃæÊý¾Ý°ü³¤¶È´óСÊǶàÉÙ.

·½°¸:

ÏòC³ÌÐò´«µÝÒ»¸öº¯ÊýÖ¸Õë(C#ÖÐΪίÍÐ)¹ýÈ¥¡£

C#ÀïÃæ¶¨ÒåÒ»¸öÏìÓ¦Êý¾Ý°üµÄ·½·¨£¬½«´Ë·½·¨·â×°ÔÚίÍÐÖУ¬´«¸øC³ÌÐò£¬

C³ÌÐòÄÇÀïÊÕµ½Êý¾Ý°üʱ¼´¿Éµ÷Óø÷½·¨¡£

C#Æô¶¯CµÄ·þÎñ-->C#ÏòC³ÌÐò×¢²áº¯ÊýÖ¸Õë-->C·þÎñÔÚÊʵ±µÄʱºò»Øµ÷C#×¢²áµÄ¸Ã·½·¨

C#³ÌÐò
public delegate void dele_newPacket(Byte[] packet);

public static void newPacket(Byte[] packet)
{}

[DllImport("Win32-Server-DLL.dll", EntryPoint = "start_delegate")]
        public static extern void start_delegate(dele_newPacket packet);

CS_Console_1.Program.dele_newPacket packet = CS_Console_1.Program.newPacket;

CS_Console_1.Program.start_delegate(packet);

C´úÂë:

void (_stdcall *dele_func)(BYTE* );//È«¾Ö±äÁ¿

void start_delegate(void(_stdcall *start_address )( BYTE* ) )
{
      printf("start_delegate call start:\n");
      dele_func = start_address;
      (*dele_func)((BYTE*)packet);//packet×ÊÇ1024BYTE
      printf("start_delegate call end:\n");
}

Ö»ÒªÊý¾Ý°üÕýÈ·´«ÈëC#³ÌÐò¾Í¿ÉÒÔÁË,ÔÚC#ÀïÃæ½øÐÐÊý¾Ý°ü´¦Àí. Çë°ïæ°¡.



Ïà¹ØÎÊ´ð£º

CÈí¼þ תÕý¹¤×ʶàÉÙºÏÊÊ£¿

µØµãÔÚÉîÛÚÄÏɽ
¡¡¡¡×öCÈí¼þ¡£ÊÔÓÃ2K£¬²»ÖªµÀתÕý¸ø¹«Ë¾Ì¸¶àÉÙºÏÊʰ¡£¿
¡¡¡¡ÁíÍ⣬±¾ÈËС±¾£¬Ó¢ÓïÁù¼¶£¬ÊÔÓÃÈý¸öÔ±íÏÖµÃÒ²ËãÖÐÉÏˮƽ¡£µ«ÊÇÏÖÔÚ»¹²»ÄÜ×öÏîÄ¿¡£ÁíÍâ±ÏҵѧУûÓÐÃûÆø¡£
¡¡¡¡×ªÕý¸ø¹«Ë¾Ì¸¶àÉ ......

ΪʲôCдDLLÎļþC¡¢PBÄܵ÷ÓÃVB²»Äܵ÷ÓÃ

ΪʲôCдµÄDLLÎļþC¡¢PBÄܵ÷ÓÃVB²»Äܵ÷Óã¿
VBÀïΪʲôÓеÄDLLÖ±½Óͨ¹ýÒýÓÿÉÒÔʹÓã¿ÓеÄÐèҪͨ¹ýdeclareÉêÃ÷Íⲿº¯Êý£¿ÕâЩDLLÓÐʲô²î±ð£¿

1¡¢ÎªÊ²Ã´PBÄÜͨ¹ýDECLAREÉùÃ÷¶øVB²»ÐУ¿
2¡¢Èç¹ûÕâ¸ödllÖÐµÄ ......

C ³ÌÐòÎÊÌâ (¶þ) - C/C++ / CÓïÑÔ

ÎÊһϣº
#include <stdio.h>
int main()
{
  char x, y, z;
  int i;
  int a[16];
  for(i=0; i<=16; i++)
  {
  a[i] = 0;
  ......

C¡¢C++¡¢VC++ ¾«Æ·µç×ÓÊé·¢²¼À²£¡

ÄÚÈÝÉæ¼°£ºC¡¢C++¡¢STL¡¢VC++¡¢MFC¡¢COM¡¢ATL¡¢WindowsÍøÂç±à³Ì¡¢Êý¾Ý¿â±à³Ì¡¢WindowsÇý¶¯±à³Ì¡¢Èí¼þ¹¤³Ì¡¢Windows²Ù×÷ϵͳ±à³Ì£¬µÈµÈ·½Ãæ¡£

ÏÂÔØµØÖ·£ºhttp://www.cctry.com/forumdisplay.php?fid=46

......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ