新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用托管C++粘合C#和C++代碼(二)
上篇文章講解了在C#代碼中調(diào)用純C++模塊的基本流程。在本文章中我們?cè)賮韺?shí)現(xiàn)一下C++代碼調(diào)用C#代碼的過程。我構(gòu)造一個(gè)簡單并且直觀的例子:通過C++ UI 觸發(fā)C# UI.

首先建立一個(gè)C#工程Class Library工程——CSharpUI
為該工程添加一個(gè)Form界面,并添加一個(gè)C#函數(shù)——InvokeUi()來構(gòu)造并顯示這個(gè)界面
- namespace CSharpUI
- {
- public class Program
- {
- public static void InvokeUi()
- {
- //class Form1-----C# UI
- Form1 fm = new Form1();
- fm.ShowDialog();
- }
- }
- }
建立一個(gè)托管的DYNAMIC LINK LIBRARY工程——MgdPro(具體步驟參考上篇文章)。
在MgdPro工程中用代碼包裝了對(duì)上述C#函數(shù)的調(diào)用,并將包裝后的類從DLL導(dǎo)出。前提條件是reference CSharpUI.dll.
- //.h file
- #define DLLIMPEXP __declspec(dllexport)
- class DLLIMPEXP MgdClass
- {
- public:
- static void InvokeCsharpDlg();
- };
- //.cpp file
- using namespace CSharpUI;
- void MgdClass::InvokeCsharpDlg()
- {
- Program::InvokeUi();
- }
***,新建一個(gè)Dialog Based的C++工程——PureC++Pro(exe工程),在工程中靜態(tài)鏈接MgdPro.dll.在Invoke按鈕的觸發(fā)函數(shù)里調(diào)用代碼觸發(fā)C#界面。
- void CPureCProDlg::OnBnClickedButton1()
- {
- // TODO: Add your control notification handler code here
- //call managed c++ to invoke c# UI
- MgdClass::InvokeCsharpDlg();
- }
運(yùn)行界面如下所示:
【編輯推薦】
- 使用托管C++粘合C#和C++代碼(一)
- 如何學(xué)好C++,用好類庫很重要
- 認(rèn)識(shí)基于中間件的軟件開發(fā)方法
- JSP動(dòng)態(tài)網(wǎng)站環(huán)境搭建應(yīng)用中的詳細(xì)步驟
- Java編譯器優(yōu)化方法簡介
當(dāng)前名稱:使用托管C++粘合C#和C++代碼(二)
標(biāo)題路徑:http://fisionsoft.com.cn/article/djhhojj.html


咨詢
建站咨詢
