使用托管C++粘合C#和C++代碼(二)
上篇文章講解了在C#代碼中調用純C++模塊的基本流程。在本文章中我們再來實現一下C++代碼調用C#代碼的過程。我構造一個簡單并且直觀的例子:通過C++ UI 觸發C# UI.
首先建立一個C#工程Class Library工程——CSharpUI

為該工程添加一個Form界面,并添加一個C#函數——InvokeUi()來構造并顯示這個界面
- namespace CSharpUI
- {
- public class Program
- {
- public static void InvokeUi()
- {
- //class Form1-----C# UI
- Form1 fm = new Form1();
- fm.ShowDialog();
- }
- }
- }
建立一個托管的DYNAMIC LINK LIBRARY工程——MgdPro(具體步驟參考上篇文章)。
在MgdPro工程中用代碼包裝了對上述C#函數的調用,并將包裝后的類從DLL導出。前提條件是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();
- }
***,新建一個Dialog Based的C++工程——PureC++Pro(exe工程),在工程中靜態鏈接MgdPro.dll.在Invoke按鈕的觸發函數里調用代碼觸發C#界面。
- void CPureCProDlg::OnBnClickedButton1()
- {
- // TODO: Add your control notification handler code here
- //call managed c++ to invoke c# UI
- MgdClass::InvokeCsharpDlg();
- }
運行界面如下所示:

【編輯推薦】



















