程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 使用托管C++粘合C#和C++代碼(二)

使用托管C++粘合C#和C++代碼(二)

編輯:C++入門知識

上篇文章講解了在C#代碼中調用純C++模塊的基本流程。在本文章中我們再來實現一下C++代碼調用C#代碼的過程。我構造一個簡單並且直觀的例子:通過C++ UI 觸發C# UI.

首先建立一個C#工程Class Library工程——CSharpUI

CSharpUI

為該工程添加一個Form界面,並添加一個C#函數——InvokeUi)來構造並顯示這個界面

  1. namespace CSharpUI  
  2. {  
  3. public class Program  
  4. {  
  5. public static void InvokeUi()  
  6. {  
  7. //class Form1-----C# UI  
  8. Form1 fm = new Form1();  
  9. fm.ShowDialog();  
  10. }  
  11. }  
  12. }  

建立一個托管的DYNAMIC LINK LIBRARY工程——MgdPro具體步驟參考上篇文章)。

在MgdPro工程中用代碼包裝了對上述C#函數的調用,並將包裝後的類從DLL導出。前提條件是reference CSharpUI.dll.

  1. //.h file  
  2. #define DLLIMPEXP __declspec(dllexport)  
  3. class DLLIMPEXP MgdClass  
  4. {  
  5. public:  
  6. static void InvokeCsharpDlg();  
  7. };  
  8.  
  9. //.cpp file  
  10. using namespace CSharpUI;  
  11. void MgdClass::InvokeCsharpDlg()  
  12. {  
  13. Program::InvokeUi();  
 

最後,新建一個Dialog Based的C++工程——PureC++Proexe工程),在工程中靜態鏈接MgdPro.dll.在Invoke按鈕的觸發函數裡調用代碼觸發C#界面。

  1. void CPureCProDlg::OnBnClickedButton1()  
  2. {  
  3. // TODO: Add your control notification handler code here  
  4. //call managed c++ to invoke c# UI  
  5. MgdClass::InvokeCsharpDlg();  
  6. }  

運行界面如下所示:

運行界面

編輯推薦】

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved