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

Developer Support Languages VC++, C# and VB.NET


Welcome to Microsoft Developer Support, Languages team blog! You will find a lot of language related troubleshooting resources here.
Troubleshooting PInvoke Related Issues 
I am back with some more PInvoke Stuff.  Recently I was working on a PInvoke issue which I found interesting. 
I have a C++ dll which has a function whose signature is
int TestFunc(IN_STRUCT in_Params, RET_STRUCT * pret_Par). 
I wanted to call this function from C#.  Function has two arguments.  First argument is input structure which will be filled from C# code and passed to C++ code.  Second argument is output structure which is filled in C++ code and output to C# code.
 Here are the C struct definitions and a function that needs to be marshaled
#include "stdafx.h"
#include <stdio.h>
#include "Objbase.h"
#include <malloc.h>
 
 
typedef struct IN_STRUCT
{
      BYTE CMD_PType;
      BYTE CMD_PTType;
      BYTE CMD_OC;     
      BYTE CMD_Seq;
     
};
 
typedef struct RET_STRUCT    
{
  
      BYTE RET_OC;
      BYTE RET_Seq;
      BYTE RET_RetBytes;
      char *str;
      BYTE RET_PD[10];
     
};
 
 
extern "C"  __declspec(dllexport) \
        int TestFunc(IN_STRUCT in_Params, RET_STRUCT * pret_Par)
{
 
      int iRet = 0;
      pret_Par->RET_OC = in_Params.CMD_OC;
      pret_Par-


Ïà¹ØÎĵµ£º

C# ίÍеÄÃîÎÄ¡¾×ª¡¿

ίÍкÍʼþÔÚ .Net FrameworkÖеÄÓ¦Ó÷dz£¹ã·º£¬È»¶ø£¬½ÏºÃµØÀí½âίÍкÍʼþ¶ÔºÜ¶à½Ó´¥C#ʱ¼ä²»³¤µÄÈËÀ´Ëµ²¢²»ÈÝÒס£ËüÃǾÍÏñÊÇÒ»µÀ¼÷¶ù£¬¹ýÁËÕâ¸ö¼÷µÄÈË£¬¾õµÃÕæÊÇÌ«ÈÝÒ×ÁË£¬¶øÃ»ÓйýÈ¥µÄÈËÿ´Î¼ûµ½Î¯ÍкÍʼþ¾Í¾õµÃÐÄÀï±ð£¨bi裩µÃ»Å£¬»ìÉí²»×ÔÔÚ¡£±¾ÎÄÖУ¬ÎÒ½«Í¨¹ýÁ½¸ö·¶ÀýÓÉdzÈëÉîµØ½²ÊöʲôÊÇίÍС¢ÎªÊ²Ã´ÒªÊ¹Ó ......

C# ²Ù×÷XML£¬×Ô¼ºÓùýµÄ´úÂ룬¿ÉÄÜÖ»ÓÐÎÒÄÜ¿´¶®

public string WriteXML(string[] values, int flag)
{

//Èç¹ûflag==0ÔòΪµÚÒ»´ÎÔËÐÐÐèÒª³õʼ»¯XMLÎļþ
if (flag == 0)
{
//ÉúÔÚËæ»úÎļþÃû
string dateName = System.DateTime.Now.ToString("yyyyMMddHHmmss");
......

c#:¶¨ÒåÌØÐÔ

c#±à³Ì»ù´¡Ö®¶þ£ºÌØÐÔ ÕâÀïµÄÌØÐÔÇø±ðÓÚÊôÐÔ£¬ËäÈ»msdnÖÐËÆºõ²¢Ã»ÓÐÇø±ð¶þÕß¡£
ÊôÐÔ£ºÊÇÃæÏò¶ÔÏó±à³ÌµÄ»ù±¾¸ÅÄÌṩÁ˶Ô˽ÓÐ×ֶεķÃÎÊ·â×°£¬ÔÚC#ÖÐÒÔgetºÍset·ÃÎÊÆ÷·½·¨ÊµÏֶԿɶÁ¿ÉдÊôÐԵIJÙ×÷£¬ÌṩÁ˰²È«ºÍÁé»îµÄÊý¾Ý·ÃÎÊ·â×°¡£
ÌØÐÔ£º¹«¹²ÓïÑÔÔËÐÐʱÔÊÐíÌí¼ÓÀàËÆ¹Ø¼ü×ÖµÄÃèÊöÉùÃ÷£¬½Ð×öattributes, Ëü¶Ô³ÌÐòÖеÄÔ ......

c#ÊÂÎñ»Ø¹ö

c#ÊÂÎñ»Ø¹ö£¨×ª£©
×÷Õߣºxue5ya  À´Ô´£º²©¿ÍÔ°  ·¢²¼Ê±¼ä£º2009-03-20 16:08  ÔĶÁ£º263 ´Î  Ô­ÎÄÁ´½Ó   [ÊÕ²Ø]  
Code
public void UpdateContactTableByDataSet(DataSet ds,string strTblName) 

    ......

c#µÄdllÎļþ·´±àÒëÀûÆ÷

¸Õ½Ó´¥.net ʱ¾ÍÌý˵ ReflectorÕâ¸öÇ¿´ó·´±àÒ빤¾ßÄØ£¬Ö»ÊÇһֱûÓÐȥʹÓÃËû. ½ñÌìupdate¸úÎÒ˵ReflectorÈçºÎ£¬ÈçºÎÓÐÓã¬ÓõÄÈçºÎ£¬ÈçºÎˬ£¬»¹µÃÒâµÄ˵·´±àÒëÁ˲»ÉÙDLL...±¾À´±¾È˶ÔÐÂÏÊʾͷdz£ÓÐÐËȤ£¬ÌýËûÕâôһ˵.¾ö¶¨ÊÔÒ»ÊÔÕâ¸ö´«ËµÖеŤ¾ß.
ÎÒÓõİ汾ÊÇ4.1.84.0£¬ÒÔ£¬°Ñ×Ô¼º±àдDLL·´±àÒëÁËһϣ¬·´±àÒëºóµÄ´úÂë ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ