DLL的生成应用
来源:互联网 发布:c 编程实战宝典 光盘 编辑:程序博客网 时间:2024/05/21 15:03
Dynamic-Link-Library
1、 函数
a) DLL中:
extern "C" __declspec(dllexport) BOOL isPrime(int num)
{ BOOL flag = false;
for(int i = 2 ; i < num ; i ++)
{
if(num % i == 0)
break;
}
if (i == num)
flag = true;
else
flag = false;
flag = false;
return flag;
}
b) 应用程序
typedef BOOL ISPRIME(int);
ISPRIME *isPrime;
hm = ::LoadLibrary("mydll2.dll");
isPrime = (ISPRIME *)::GetProcAddress(hm,"isPrime");
if(isPrime(8))
MessageBox("是素数");
else
MessageBox("不是素数");
hm = ::LoadLibrary("mydll2.dll");
2、 类
a) DLL
i. IloveYou.h头文件
class __declspec(dllexport) CILoveYou
{
public:
int GetValue();
void SetValue(int v);
CILoveYou();
virtual ~CILoveYou();
private:
int a;
};
ii.IloveYou.cpp程序文件
CILoveYou::CILoveYou()
{
a = 0;
}
CILoveYou::~CILoveYou()
{
}
__declspec(dllexport) void CILoveYou::SetValue(int v)
{
this->a = v;
}
__declspec(dllexport) int CILoveYou::GetValue()
{
return a;
}
b) 应用程序
先把#include "ILoveYou.h"文件导入进来,然后在StdAfc.h头文件加入:
class __declspec(dllimport) CILoveYou;
访问该类的代码:
CILoveYou ily;
ily.SetValue(900);
char s[100];
wsprintf(s,"调用了类中的成员哦,值是:%d",ily.GetValue());
ShowMessage(this->GetSafeHwnd(),s);
MFC 规则DLL
1、 函数
a) DLL
此类DLL有一个继承了CwinApp的类,但是函数可以不放在该类中。
extern "C" __declspec(dllexport) BOOL isOdd(int num)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());//此句一定要
if(num % 2 == 0)
return true;
else
return false;
}
b) 应用程序
void CTestdll2Dlg::OnButton5()
{
// TODO: Add your control notification handler code here
typedef BOOL ISODD(int);
ISODD *isOdd;
HINSTANCE hm;
if(hm = ::LoadLibrary("mfcdll4.dll"))
{
isOdd = (ISODD *)::GetProcAddress(hm,"isOdd");
if(isOdd)
{
if(isOdd(9))
MessageBox("是偶数");
else
MessageBox("不是偶数");
}
else
{
MessageBox("有问题");
}
::FreeLibrary(hm);
}
else
{
MessageBox("DLL加载失败");
}
}
2、 类
a) DLL中的代码
i. Clzh类的头文件:lzh.h
class AFX_EXT_CLASS Clzh //此处一定要用AFX_EXT_CLASS
{
public:
CString GetValue();
void SetValue(CString str);
Clzh();
private:
CString str;
};
ii. Clzh类的实现文件:lzh.cpp
Clzh::Clzh()
{
}
__declspec(dllexport) void Clzh::SetValue(CString str)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
this->str = str;
}
__declspec(dllexport) CString Clzh::GetValue()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return str;
}
b) 应用程序
在StdAfx.h中头文件中加入:class __declspec(dllimport) Clzh;
在要访问该类的地方加入头文件:#include "lzh.h"
程序如下:
void CTestdll2Dlg::OnButton7()
{
// TODO: Add your control notification handler code here
Clzh lzh;
lzh.SetValue("abc");
MessageBox(lzh.GetValue());
}
- DLL的生成应用
- dll介绍,生成,应用过程
- Dll文件的生成
- VS2013中应用项目生成DLL
- DLL的应用。
- 资源Dll的应用
- DLL的简单应用
- Iphlpapi.dll的应用
- VC++的DLL应用
- 混合编程---c++调用matlab生成的dll----findCircles的应用
- Win32中用VS生成属于自己的动态链接库(DLL)并应用
- 更改生成DLL的名称
- VS2005生成DLL的调用
- VC生成dll的方法
- FetionSDK.dll的应用实例
- Ajax.dll文件的应用
- MFC生成带控件的dll以及dll的调用
- Matlab2015编译生成Dll并在VS2010环境下应用的具体操作步骤(64位系统)
- 模板中的数据绑定
- 任务管理器菜单栏丢失~~
- CString::Format()之用法小结1
- 祖籍
- .NET中各种数据库连接大全
- DLL的生成应用
- 开始旷课了
- iis与tomcat5的整合
- CVSNT用户管理方案
- 了解linux
- 文书制作中要用到的javascript
- 汉字判断
- 关于窗口重绘的初级问题&由UpdateData(FALSE)想到的窗口刷新问题
- LabView与SQL Server的连接