Windows下动态库的编译以及调用
2020-12-13 05:49
标签:style blog color os io 文件 for ar 1.MFC下生成动态库 1>显式调用 在.cpp文件里添加接口函数 在.def文件里标示导出接口 编译即可生成动态库 在.exe里调用 在头文件里添加 Button事件 然后将相应的.dll和.lib拷贝到相应目录即可。 2>隐式调用 在头文件里添加 1 typedef int (*PFUNC)(int,int); 1 HMODULE hDllLib; 2 PFUNC m_pSum; 3 PFUNC m_pSub; 在BOOL CTestDlgDlg::OnInitDialog()里添加 其他相应代码 2.Win32下动态库生成及调用 动态库头文件里添加 .cpp文件里添加 编译即生成动态库 调用 在.exe头文件里添加 其他相应文件 以上代码通过测试! Windows下动态库的编译以及调用,搜素材,soscw.com Windows下动态库的编译以及调用 标签:style blog color os io 文件 for ar 原文地址:http://www.cnblogs.com/wanzaiyimeng/p/3885653.html1 int sum(int a,int b)
2 {
3 return a + b;
4 }
5
6 int sub(int a,int b)
7 {
8 return a - b;
9 }
1 sum @1; 2 sub @2; 1 #pragma comment(lib,"TestDLL")
2 int sum(int a,int b);
3 int sub(int a,int b);
1 public:
2 void InitAll();
3 CString decToStr(int dec);
4
5 public:
6 CString str1,str2;
7 int a,b;
1 void CTestDlgDlg::OnButtonAdd()
2 {
3 // TODO: Add your control notification handler code here
4 InitAll();
5 int c = sum(a,b);
6 CString sum1 = decToStr(c);
7 SetDlgItemText(IDC_EDIT3,sum1);
8 }
1 void CTestDlgDlg::OnButtonSub()
2 {
3 // TODO: Add your control notification handler code here
4 InitAll();
5 int d = sub(a,b);
6 CString Sub = decToStr(d);
7 SetDlgItemText(IDC_EDIT4,Sub);
8 }
1 void CTestDlgDlg::InitAll()
2 {
3 UpdateData(TRUE);
4 GetDlgItemText(IDC_EDIT1,str1);
5 GetDlgItemText(IDC_EDIT2,str2);
6 a = atoi(str1);
7 b = atoi(str2);
8 }
9
10 CString CTestDlgDlg::decToStr(int dec)
11 {
12 CString str;
13 str.Format(_T("%d"),dec);
14 return str;
15 }
1 hDllLib = LoadLibrary("TestDll.dll");
2 if (hDllLib == NULL)
3 {
4 AfxMessageBox("dll load error");
5 return FALSE;
6 }
7 m_pSum = (PFUNC)(GetProcAddress(hDllLib,"sum"));
8 m_pSub = (PFUNC)(GetProcAddress(hDllLib,"sub"));
1 void CTestDlgDlg::OnButtonAdd()
2 {
3 // TODO: Add your control notification handler code here
4 InitAll();
5 int c= m_pSum(a,b);
6 CString sum1 = decToStr(c);
7 SetDlgItemText(IDC_EDIT3,sum1);
8 }
9
10 void CTestDlgDlg::OnButtonSub()
11 {
12 // TODO: Add your control notification handler code here
13 InitAll();
14 int d = m_pSub(a,b);
15 CString Sub = decToStr(d);
16 SetDlgItemText(IDC_EDIT4,Sub);
17 }
18
19 void CTestDlgDlg::InitAll()
20 {
21 UpdateData(TRUE);
22 GetDlgItemText(IDC_EDIT1,str1);
23 GetDlgItemText(IDC_EDIT2,str2);
24 a = atoi(str1);
25 b = atoi(str2);
26 }
27
28
29 CString CTestDlgDlg::decToStr(int dec)
30 {
31 CString str;
32 str.Format(_T("%d"),dec);
33 return str;
34 }
1 extern "C" WIN32DLL_API int sum(int a,int b);
2 extern "C" WIN3
2DLL_API int sub(int a,int b);1 extern "C" WIN32DLL_API int sum(int a,int b)
2 {
3 return a + b;
4 }
5
6 extern "C" WIN32DLL_API int sub(int a,int b)
7 {
8 return a - b;
9 }
1 #pragma comment(lib,"Win32DLL")
2
3 extern "C" int sum(int a,int b);
4 extern "C" int sub(int a,int b);
1 void CTestDlgDlg::OnButtonAdd()
2 {
3 // TODO: Add your control notification handler code here
4 InitAll();
5 int c = sum(a,b);
6 CString sum1 = decToStr(c);
7 SetDlgItemText(IDC_EDIT3,sum1);
8 }
9
10 void CTestDlgDlg::OnButtonSub()
11 {
12 // TODO: Add your control notification handler code here
13 InitAll();
14 int d = sub(a,b);
15 CString Sub = decToStr(d);
16 SetDlgItemText(IDC_EDIT4,Sub);
17 }
18
19 void CTestDlgDlg::InitAll()
20 {
21 UpdateData(TRUE);
22 GetDlgItemText(IDC_EDIT1,str1);
23 GetDlgItemText(IDC_EDIT2,str2);
24 a = atoi(str1);
25 b = atoi(str2);
26 }
27
28
29 CString CTestDlgDlg::decToStr(int dec)
30 {
31 CString str;
32 str.Format(_T("%d"),dec);
33 return str;
34 }