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

C#調用C++動態鏈接庫方法介紹

開發 后端
本文回答了C#調用C++動態鏈接庫的問題。

當VC等調用C#寫的COM時,用regasm   /tlb生成TLB文件,也可用tlbexp.exe,在VC等中加載TLB文件,當用C#調用VC等寫的COM時,用tlbimp.exe,你可以寫一個程序調試一下

下面介紹C#調用C++動態鏈接庫方法。

添加System.Runtime.InteropServices命名空間

如是COM就直接用靜態函數調用:                  

  1. public   static   int   GetNum(     
  2.                           int   lFileSeqNo,     
  3.                           string   sExtType,     
  4.                           string   sExtNumber,     
  5.                           string   sFormID,     
  6.                           string   sOperationDate,     
  7.                           string   sSystemRegistDate,     
  8.                           out   int   lCount,     
  9.                           out   int   lErrorType,     
  10.                           out   int   lErrorCode)     
  11.                   {     
  12.                           int   iRet;     
  13.       
  14.                           WOBCom.ObjClass   obj   =   new   WOBCom.ObjClass();     
  15.                               
  16.                           iRet   =   obj.GetNum(     
  17.                                   lFileSeqNo,     
  18.                                   sExtType,     
  19.                                   sExtNumber,     
  20.                                   sFormID,     
  21.                                   sOperationDate,     
  22.                                   sSystemRegistDate,     
  23.                                   out   lCount,     
  24.                                   out   lErrorType,     
  25.                                   out   lErrorCode);     
  26.       
  27.                           return   iRet;     
  28.                   }     

如不使COM是普通的DLL  

不能直接用  

只能在C++中加一個對外的接口:  

  1. extern   "C"   __declspec(dllexport)   WOExtConRegObj*   OutGetObjConstructor();     
  2. extern   "C"   __declspec(dllexport)   void   OutGetObjDestructor(WOExtConRegObj*   outGetObj);     
  3.       
  4. extern   "C"   __declspec(dllexport)   long   SelectDummyRecord(long   *lErrorType,     
  5.         long   *lErrorCode,     
  6.         WOExtConRegObj*   outGetObj);     
  7. //     
  8. extern   "C"   __declspec(dllexport)   WOExtConRegObj*   OutGetObjConstructor()     
  9. {     
  10.           WOExtConRegObj*   outGetObj   =   new   WOExtConRegObj();        
  11.           return   outGetObj;     
  12. }     
  13.       
  14. extern   "C"   __declspec(dllexport)   void   OutGetObjDestructor(WOExtConRegObj*   outGetObj)     
  15. {     
  16.           delete   outGetObj;     
  17. }     
  18.       
  19. extern   "C"   __declspec(dllexport)   long   SelectDummyRecord(long   *lErrorType,     
  20.         long   *lErrorCode,     
  21.         WOExtConRegObj*   outGetObj)     
  22. {     
  23. return   outGetObj->SelectDummyRecord(lErrorType,     
  24. lErrorCode);         
  25. }     

就可直接用C#調用C++動態鏈接庫了    

  1. [DllImport("XXX.dll", EntryPoint="SelectDummyRecord", ExactSpelling=false, CallingConvention=CallingConvention.Cdecl)]     
  2.  private   static   extern   int   SelectDummyRecord(out int lErrorType,out int lErrorCode,int outGetObj);     
  3.  
  4.  ///   < summary>     
  5.  ///   < /summary>     
  6.  ///   < remarks>     
  7.  ///   < /remarks>                     
  8.  ///   < param name="lErrorType">< /param>     
  9.  ///   < param name="lErrorCode">< /param>     
  10.  ///   < returns>< /returns>     
  11.  public int SelectDummyRecord(out int lErrorType,out int lErrorCode)     
  12.  {     
  13.          int   intRtn;     
  14.  
  15.          intRtn   =   SelectDummyRecord(     
  16.                  out   lErrorType,     
  17.                  out   lErrorCode,     
  18.                  m_OutGetObj);       
  19.          return   intRtn;     
  20.  }    

這樣就解決了C#調用C++寫的動態鏈接庫的問題。

【編輯推薦】

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

2024-03-01 20:59:11

C#DLL開發

2011-05-18 17:15:45

2009-08-28 16:19:30

C#實現修改動態鏈接庫

2010-02-01 17:37:35

C++調用C鏈接庫

2012-01-06 10:25:50

JavaDLLC++

2021-09-01 05:11:13

C# 動態鏈接庫

2023-03-15 15:58:11

Python動態庫C++

2011-04-08 09:52:44

C++C#DLL

2009-08-24 18:09:13

C#調用Oracle數

2009-08-25 14:42:41

由C++轉向C#

2009-09-17 18:14:05

C#動態數組

2009-08-07 16:10:20

C#調用API

2009-08-20 12:29:46

C#調用PInvoke

2009-08-31 16:33:28

C#調用Dispose

2009-08-31 18:05:14

C#調用WalkTre

2023-08-02 10:10:00

C#C++

2009-09-02 11:02:57

C#動態數組

2009-08-19 14:35:12

C++和C#相互調用C

2009-08-14 17:27:56

C#方法參數

2009-08-20 16:25:59

C# 匿名方法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线欧美小视频 | 综合久| 97人人超碰 | 国产精品视频久久久 | 亚洲视频免费在线观看 | 午夜国产一区 | 黄色片视频 | 国产99久久精品 | 一区二区高清不卡 | 天天爱天天操 | 日本精品久久 | 中文字幕一区二区三区在线观看 | 午夜亚洲 | 91免费观看 | 九九伦理电影 | 日韩精品免费在线观看 | 精品在线观看一区 | 国产精品美女在线观看 | 欧美国产日韩精品 | 国产一区2区 | 久久久久国产一区二区三区 | 国产成人精品a视频一区www | 亚洲精品在线免费 | 国产精品国产三级国产aⅴ中文 | 亚洲欧美日韩在线 | 在线一区二区国产 | 最新中文字幕在线 | 久久久999精品 | 国产一区二区精品在线观看 | 自拍视频网站 | 亚洲精品v| 日韩中文在线 | 久久精品网 | 久久精品久久久久久 | 国产精品五月天 | 久久久成人免费视频 | 国产精品久久久久免费 | 国产一区二区三区免费 | 97久久精品午夜一区二区 | 伊人爽| 夜夜干夜夜操 |