calling c++ dlls from vc++ -- with win32 dynamic-link library copyright (c) 2006 ncnu lab 202 all...

105
Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Post on 19-Dec-2015

226 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Calling C++ DLLs from VC++-- with Win32 Dynamic-Link Library

Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Page 2: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Files Required To Use A DLL

Programmer :

Normal User : .dll

Page 3: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Loading Method

Loading DLL Implicitly A DLL that exports some symbols.

Loading DLL Explicitly Using " .def " file.

Calling GUI DLL Using MFC DLL Call by C# Application Call by MFC Application

Return Input DLL Call DLL

Page 4: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Method OneUsing Exported Symbols

Page 5: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Dll Project – step 1

Page 6: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Dll Project – step 2

Page 7: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Dll Project – step 3

Page 8: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Dll Project – step 4

Page 9: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Define

#pragma message("automatic link to MyDll.lib")

#pragma comment(lib , "MyDll.lib") Ensure when a project include the DLL’s

header file , it will automatically link to the DLL’s Lib file.

Page 10: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Dll Project – step 5

Page 11: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Understanding DllMain()

BOOL APIENTRY DllMain(

HMODULE hModule ,//Identify DLLDWORD ul_reason_for_call , //Why Call ??LPVOID lpReserved //pointer

)

Page 12: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit MyDll.h

extern MYDLL_API float num_01 ;extern MYDLL_API float num_02 ;

class MYDLL_API Plus{public:

Plus(void) ;//Constructor

float static myplus(float m , float n) ;//function

float static dimension_1(float m , float n) ;//function};

Page 13: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit MyDll.cpp

MYDLL_API float num_01 = 0 ; //set default valeMYDLL_API float num_02 = 0 ; //set default vale

float Plus::myplus(float n , float m){

return (num_01 + num_02) ;}float Plus::dimension_1(float m, float n){

return ((num_01 + num_02) + (num_01 + num_02)) ;}

Compile project “MyDLL" to get “MyDll.dll" & "method_01.lib".It will be under "..\debug "

Page 14: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Console Project – step 1

Page 15: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Console Project – step 2

Page 16: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Console Project – step 3

Page 17: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Console Project – step 4

Page 18: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Console Project – step 5

Page 19: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Console Project – step 6

Page 20: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit AppConsole.cpp - 01

float num_a = num_01 ;float num_b = num_02 ;

cout << "Default Value : " << endl ;cout << "num_a = " << num_a << " , num_b = “<< num_b << endl ;

Page 21: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit AppConsole.cpp - 02

cout << "Keyin New Value : " << endl ;cout << "num_01 = " ; cin >> num_01 ;cout << "num_02 = " ; cin >> num_02 ;

cout << "Update Value : " << endl ;cout << "num_01 = " << num_01 << " , num_02 = " << num_02 << endl ;

Page 22: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit AppConsole.cpp - 03

doplus = Plus::myplus(num_01 , num_02) ;dimension_01 = Plus::dimension_1(num_01 , num_02) ;

cout << num_01 << " + " << num_02 << " = " << doplus << endl ;cout << "Result dimension_01 = " << dimension_01 << endl ;

Page 23: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MFC Project – step 1

Page 24: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MFC Project – step 2

Page 25: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MFC Project – step 3

Page 26: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MFC Project – step 4

Page 27: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MFC Project – step 5

Page 28: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MFC Project – step 6

Page 29: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Insert New Item

Page 30: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Add Member Variables - 1

Page 31: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Add Member Variables - 2

Page 32: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Add Member Variables - 3

Page 33: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit AppMFCDlg.cpp

void CAppMFCDlg::OnBnClickedButton1(){

CString mystr_a = string_a ;CString mystr_b = string_b ;CString mystr_c = string_c ;

m_static.SetWindowText(mystr_a) ;m_edit.SetWindowText(mystr_b) ;m_button.SetWindowText(mystr_c) ;

}

Page 34: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

After Executing

Page 35: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Method TwoUsing " .def " File

Page 36: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial ExplicitDLL Project – step 1

Page 37: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial ExplicitDLL Project – step 2

Page 38: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial ExplicitDLL Project – step 3

Page 39: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial ExplicitDLL Project – step 4

Page 40: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial ExplicitDLL Project – step 5

Page 41: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial ExplicitDLL Project – step 6

Page 42: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit count.h

Page 43: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit count.cpp

Page 44: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Compile project "ExplicitDLL" to get “ExplicitDLL.dll" & "ExplicitDLL.lib".

It will be under "..\debug "

Edit count.def

Page 45: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial ExplicitDLL2 Project

Follow page35 ~ page 42 to make ExplicitDLL2

After compile , you will get ExplicitDLL2.dll and ExplicitDLL2.lib

Page 46: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial DllMFC Project – step 1

Page 47: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial DllMFC Project – step 2

Page 48: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial DllMFC Project – step 3

Page 49: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial DllMFC Project – step 4

Page 50: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Add Member Variables - 1

Page 51: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Add Member Variables - 2

Page 52: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit DllMFCDlg.cpp - 1

typedef double (*LPGETNUMBER)(double Nbr) ; //define typeHINSTANCE hDLL = NULL ; //default valueLPGETNUMBER lpGetNumber ; //set pointer

Page 53: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit DllMFCDlg.cpp - 2

hDLL = AfxLoadLibrary("ExplicitDLL"); //load DLL

if( hDLL == NULL ){

AfxMessageBox("Can't load ExplicitDLL"); //show message

m_button1.ShowWindow(SW_HIDE) ; //hide button1}else{

lpGetNumber = (LPGETNUMBER)GetProcAddress(hDLL, "GetNumber");}

Page 54: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit DllMFCDlg.cpp - 3

void CDllMFCDlg::OnBnClickedGetNumberBtn1(){

double Number, GetNbr;

UpdateData();

Number = atof(m_Number);GetNbr = lpGetNumber(Number);m_GetNumber.Format("%.2f", GetNbr);

UpdateData(FALSE);}

Page 55: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

After Executing – delete ExplicitDLL2.dll

Page 56: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

After Executing – calling ExplicitDLL.dll

Page 57: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

After Executing – calling ExplicitDLL2.dll

Page 58: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Calling GUI DLL

Page 59: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyDLL Project – step 1

Page 60: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyDLL Project – step 2

Page 61: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyDLL Project – step 3

Page 62: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyDLL Project – step 4

Page 63: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Add Dialog Class

Page 64: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit IDD_MYCLASS.rc

Page 65: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit MyDLL.h

Page 66: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Compile project "MyDLL" to get “MyDLL.dll" & " MyDLL.lib".It will be under "..\debug "

Edit MyDLL.cpp

Page 67: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit MyDLL.def

Page 68: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyCSharp Project – step 1

Page 69: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyCSharp Project – step 2

Page 70: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit Form1.cs - 1

Page 71: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit Form1.cs - 2

private void OnClick(object sender, EventArgs e){

ShowHTBDialog() ;}

private void button2_Click(object sender, EventArgs e){

Application.Exit() ;}

Page 72: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

After Executing – calling MyDLL.dll

Page 73: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyMFC Project – step 1

Page 74: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyMFC Project – step 2

Page 75: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyMFC Project – step 3

Page 76: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyMFC Project – step 4

Page 77: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyMFC Project – step 5

Page 78: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyMFC Project – step 6

Page 79: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit MyMFCDlg.cpp

void CMyMFCDlg::OnClick(){

CMyDLLApp::ShowHTBDialog() ;}

Page 80: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

After Executing – calling MyDLL.dll

Page 81: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Return GUI DLL

Page 82: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyDLL Project – step 1

Page 83: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyDLL Project – step 2

Page 84: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyDLL Project – step 3

Page 85: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyDLL Project – step 4

Page 86: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit MyDLL.rc

Page 87: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Add Dialog Class

Page 88: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Add Member Variables

Page 89: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit MyDLL.cpp

Page 90: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit MyDLL.def

Compile project "MyDLL" to get “MyDLL.dll" & " MyDLL.lib".It will be under "..\debug "

Page 91: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyCSharp Project – step 1

Page 92: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyCSharp Project – step 2

Page 93: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit Form1.cs

Page 94: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

After Executing – calling MyDLL.dll

Page 95: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

DLL Call DLL

Page 96: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial Two DLL Project

Like last example , we add two DLL : “MyDLL_1” and “MyDLL_2”

Page 97: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyMFC DLL – edit MyMFCDLL.cpp

int CMyMFCDLLApp::Dll_call_Dll(){

h1DLL = LoadLibrary(_T("MyDLL_1.dll"));h2DLL = LoadLibrary(_T("MyDLL_2.dll"));

if(h1DLL == NULL && h2DLL == NULL ){ return 1 ; }else if(h1DLL != NULL && h2DLL == NULL){ return 2 ; }else if(h1DLL == NULL && h2DLL != NULL ){ return 3 ; }else{ return 4 ; }

}

Page 98: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Initial MyCSharp Project - 1

Page 99: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit Form1.cs - 1

[DllImport("MyDLL_1.dll")]public static extern int ShowHTBDialog_1();

[DllImport("MyDLL_2.dll")]public static extern int ShowHTBDialog_2();

[DllImport("MyMFCDLL.dll")]public static extern int Dll_call_Dll();

Page 100: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit Form1.cs - 2

private void Form1_Load(object sender, EventArgs e){

int num;num = Dll_call_Dll();

if (num == 1){ MyButton_1.Enabled = false;

MyButton_2.Enabled = false; }else if (num == 2){ MyButton_1.Enabled = true;

MyButton_2.Enabled = false; }else if (num == 3){ MyButton_1.Enabled = false;

MyButton_2.Enabled = true; }else{ MyButton_1.Enabled = true;

MyButton_2.Enabled = true; }}

Page 101: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

Edit Form1.cs - 3

private void MyButton_1_Click(object sender, EventArgs e){

int num;num = ShowHTBDialog_1();MyLebel_1.Text = num.ToString();

}

private void MyButton_2_Click(object sender, EventArgs e){

int num;num = ShowHTBDialog_2();MyLebel_2.Text = num.ToString();

}

Page 102: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

After Executing - 1

Page 103: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

After Executing - 2

remove MyDLL_1.dll

Page 104: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

After Executing - 3

remove MyDLL_2.dll

Page 105: Calling C++ DLLs from VC++ -- with Win32 Dynamic-Link Library Copyright (c) 2006 NCNU Lab 202 All Rights Reserved

After Executing - 3

remove MyMFCDLL.dll