成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#調用VC dll輸出參數

開發 后端
本文解決了c#的調用VC dll輸出參數的問題。

最近做項目需要把以前Vc寫的程序整合到VS2005來,用c#寫的,以前VC的動態連接庫寫好了,重寫比較麻煩,讓C#調用VC dll就好了。但碰到了一個問題:VC中作為輸出參數的char*類型的變量應該怎樣申明才能正確輸出數據呢?

一般說來,在VC中一般的輸出參數都為指針或數組的形式,如果是一般類型的指針如整形等,在c#中用ref加上數據變量則可獲得返回值。所以我試著把VC中char*輸出變量在c#中寫成ref string(因為char*在c#中可以寫成string或char[]),但發現這樣寫是不行的。

后來從網上查了些資料,發現char*類型數據作為輸出參數時,在c#中數據類型要寫成StringBuilder。這樣既解決了傳進去的參數問題,又解決了傳出參數的問題。

以下例子是我用C#調用VC dll中的函數的聲明及使用方法:

  1. using System.Runtime.InteropServices;//使用dll動態庫和API函數必需  
  2.  
  3.  
  4.  
  5. [DllImport("PmacNc.dll", CharSet = CharSet.Ansi)]  
  6. public static extern int GetResponse(StringBuilder com_response, System.UInt32  
  7. maxchar, System.Char[] sendChar);  
  8.  
  9. Global.UserDll.GetResponse(com_response, 100, sendchar1);  

C#調用VC dll輸出參數的注意事項

1.CharSet要使用Ansi,因為Vc默認是Ansi的,而c#是Unicode,兩者不統一會產生亂碼。還有其他DIIImport的其他參數如下,除了EntryPoint,其他三個都是非必要的。

EntryPoint: 指定要調用的 DLL 入口點。默認入口點名稱是托管方法的名稱 。

CharSet: 控制名稱重整和封送 String 參數的方式 (默認是UNICODE) 

CallingConvention指示入口點的函數調用約定(默認WINAPI)

SetLastError 指示被調用方在從屬性化方法返回之前是否調用 SetLastError Win32 API 函數 (C#中默認false )

2.結構體的引用傳遞

首先在c#中定義和c++相同的結構體,如果是引用傳遞,在結構體前面加上[In, Out],如:

 [DllImport(@"test.dll")]

public static extern int test([In, Out] SLineData[] lndt,ref UInt32 length);

3.如果遇到char**類型的輸出參數也就是指針的指針,或者二維數組或其他更復雜的情況??梢詤⒖家韵戮W頁:

http://www.cppblog.com/kerlw/archive/2007/06/27/27061.html?opt=admin

http://www.ixpub.net/viewthread.php?tid=810850

【編輯推薦】

  1. C#程序中的數據顯 示:自定義標簽和XML、XSL
  2. C#自定義事件是如何生成的
  3. C# 自定義控件dll文件的生成步驟
  4. C#自定義快捷鍵的實現
  5. C#自定義事件的步驟介紹
責任編輯:book05 來源: csdn
相關推薦

2009-08-05 09:22:43

C#調用VC DLL

2009-08-05 16:49:42

C#中調用dll

2009-08-05 09:09:14

C#調用VC DLL接

2009-07-31 17:28:35

C#語言調用DLL

2009-08-03 12:57:27

C#調用DLL

2009-08-07 17:22:36

C#調用dll導出函數

2009-08-05 09:40:02

C#調用DLL函數

2009-08-05 09:30:39

C#調用DLL函數

2009-09-02 17:16:01

冒泡排序

2011-04-08 09:52:44

C++C#DLL

2009-08-05 17:06:39

ASP調用C# DLL

2024-03-01 20:59:11

C#DLL開發

2009-07-31 14:54:48

dll函數C#導出

2009-08-18 16:31:19

Visual C#編寫

2011-03-31 09:13:00

Visual Stud

2009-08-05 14:45:56

VC中DLL的創建及調

2009-08-07 17:12:07

C# DLL函數

2009-08-17 13:26:20

C#調用Windows

2009-08-10 13:05:06

C# DLLC# Delphi開發

2009-08-17 16:18:47

C#調用CreateO
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产91久久综合桃花 | h视频在线免费 | 精品视频免费 | 久久精品中文 | 亚洲激情一区二区三区 | 天天操天天干天天爽 | 在线欧美视频 | 四虎在线观看 | 亚洲美女一区 | 亚洲一区二区在线视频 | 日韩国产一区二区 | 久久国产激情视频 | 麻豆va| 欧美aⅴ片 | 久久69精品久久久久久国产越南 | 国产精品视频网站 | 天堂资源 | 亚洲成av人片在线观看 | 中文字幕在线视频观看 | 国产日韩精品一区 | 亚洲444eee在线观看 | sese视频在线观看 | 亚洲a视频 | 国产91九色 | 欧洲视频一区二区 | 男女污污动态图 | 九九久久免费视频 | 欧美一区二区三区的 | www.久久久| 国产成人久久精品一区二区三区 | 韩日一区二区 | 日本精品视频一区二区三区四区 | 欧美高清视频一区 | 午夜一区 | 国产精品日韩在线观看一区二区 | 激情一区 | 中文字幕视频在线 | 亚洲精品久久久久avwww潮水 | 国产精品自拍视频网站 | 久久久精品一区二区三区 | 中文字幕在线视频免费观看 |