日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#調(diào)用VCDLL知識(shí)點(diǎn)

本人認(rèn)為用C#調(diào)用VC DLL是很有用的知識(shí)點(diǎn),我自己感覺很好用啊,不知道別人用我這個(gè)方法是否好用。

VC:

比如想要用C#調(diào)用的VC的函數(shù)是:

A( int* b ),

因?yàn)橹羔樤贑#里不容易接,所以這時(shí)候我就會(huì)在VC里稍微改變一下,

定義一個(gè)結(jié)構(gòu)體:

C{ int num; int* b },

之后把那個(gè)調(diào)用的函數(shù)改為:

A( C &c )。

C#:

首先呢,需要引入結(jié)構(gòu)體:

 
 
 
  1. [StructLayout(LayoutKind.Sequential)]  
  2. public struct C  
  3. {  
  4. public int num;  
  5. public IntPtr b; //注意,這里用的是IntPtr  
  6. }  

然后,引入接口函數(shù):

 
 
 
  1. [DllImport("DLL_NAME.dll")]  
  2. extern static void A(out C c); //這里的out也可以用ref  

然后,調(diào)用:

 
 
 
  1. C c = new C();  
  2. A(out c);  

***我們需要把輸出的這個(gè)c轉(zhuǎn)化為一個(gè)int類型的數(shù)組,這樣才好用:

 
 
 
  1. int v = c.num  
  2. int[] x=new int[v];  
  3. int size = System.Runtime.InteropServices.Marshal.SizeOf(new int()); //這里是為了算清楚int類型步長  
  4. for (int i = 0; i <  v_points_out.points_num; i++)  
  5. {  
  6. int p = (int)System.Runtime.InteropServices.Marshal.PtrToStructure(new IntPtr(c.b.ToInt32() + size * i), typeof(int)); //取出每個(gè)值  
  7. x[i] = p;  
  8. }  

我寫得是簡(jiǎn)單的例子,專門傳整數(shù)類型的指針的,

其實(shí)還可以是復(fù)雜類型的,可是是C#沒有的,可以是自己定義的,等等,

寫出來C#調(diào)用VC DLL這個(gè)方法,希望對(duì)一些人有幫助。


本文名稱:C#調(diào)用VCDLL知識(shí)點(diǎn)
轉(zhuǎn)載來于:http://m.5511xx.com/article/cdsihis.html