DLL的编写与使用
2012-04-19 14:42
417 查看
1.MFC扩展的DLL的编写与使用
1.1编写MFC扩展的DLL
File->New->Project 选择MFC DLL
Next 保持默认设置即可
在MFCDLL.def文件中添加导出函数名称HintBox,程序代码如下所示
; MFCDLL.def : 声明 DLL 的模块参数。
LIBRARY
EXPORTS
; 此处可以是显式导出
HintBox
在头文件MFCDLL.h文件中声明导出函数,程序代码如下所示
// CMFCDLLApp
// 有关此类实现的信息,请参阅 MFCDLL.cpp
//
extern "C" void PASCAL EXPORT HintBox();
class CMFCDLLApp : public CWinApp
{
public:
CMFCDLLApp();
// 重写
public:
virtual BOOL InitInstance();
DECLARE_MESSAGE_MAP()
};
在文件MFCDLL.cpp中定义函数的实现部分,棋程序代码如下所示
extern "C" void PASCAL EXPORT HintBox()
{
AfxMessageBox("您工作的时间太长了,请休息片刻!");
}
最后 选择Build->"Build MFC DLL"命令。
1.2使用MFC扩展的DLL
1.2.1 静态链接
#include "mfcdll.h"
#pragma comment(lib,"mfcdll.lib")
void CusedllmfcDlg::OnBnClickedButton1()
{
HintBox();
}
1.2.2动态链接
不需要加载头文件
typedef void(*fun)();
void CusedllmfcDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
fun f;
HINSTANCE hInstLibrary=LoadLibrary(_T("MFCDLL"));
if(hInstLibrary==NULL)
{
FreeLibrary(hInstLibrary);
MessageBox("DLL加载失败");
}
f=(fun)GetProcAddress(hInstLibrary,"HintBox");
if(f==NULL)
{
FreeLibrary(hInstLibrary);
MessageBox("HintBox函数加载失败");
}
f();
}
2Win32 DLL的创建和使用
2.1Win32DLL的创建
新建一个factorial.h文件,添加如下代码
#ifndef FACTORIAL_H
#define FACTORIAL_H
extern "C" _declspec(dllexport) int factorial(int n);
#endif
在factorial.cpp文件中,添加如下代码
// factorial.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
int factorial(int n)
{
n++;
return n;
}
选择"Build"->"Build factorial"命令 即可。
2.2Win32DLL的使用
使用方式同MFC的DLL一样,也具备两种方式。
本文出自 “代码” 博客,请务必保留此出处http://andydeng.blog.51cto.com/4768445/838494
1.1编写MFC扩展的DLL
File->New->Project 选择MFC DLL
Next 保持默认设置即可
在MFCDLL.def文件中添加导出函数名称HintBox,程序代码如下所示
; MFCDLL.def : 声明 DLL 的模块参数。
LIBRARY
EXPORTS
; 此处可以是显式导出
HintBox
在头文件MFCDLL.h文件中声明导出函数,程序代码如下所示
// CMFCDLLApp
// 有关此类实现的信息,请参阅 MFCDLL.cpp
//
extern "C" void PASCAL EXPORT HintBox();
class CMFCDLLApp : public CWinApp
{
public:
CMFCDLLApp();
// 重写
public:
virtual BOOL InitInstance();
DECLARE_MESSAGE_MAP()
};
在文件MFCDLL.cpp中定义函数的实现部分,棋程序代码如下所示
extern "C" void PASCAL EXPORT HintBox()
{
AfxMessageBox("您工作的时间太长了,请休息片刻!");
}
最后 选择Build->"Build MFC DLL"命令。
1.2使用MFC扩展的DLL
1.2.1 静态链接
#include "mfcdll.h"
#pragma comment(lib,"mfcdll.lib")
void CusedllmfcDlg::OnBnClickedButton1()
{
HintBox();
}
1.2.2动态链接
不需要加载头文件
typedef void(*fun)();
void CusedllmfcDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
fun f;
HINSTANCE hInstLibrary=LoadLibrary(_T("MFCDLL"));
if(hInstLibrary==NULL)
{
FreeLibrary(hInstLibrary);
MessageBox("DLL加载失败");
}
f=(fun)GetProcAddress(hInstLibrary,"HintBox");
if(f==NULL)
{
FreeLibrary(hInstLibrary);
MessageBox("HintBox函数加载失败");
}
f();
}
2Win32 DLL的创建和使用
2.1Win32DLL的创建
新建一个factorial.h文件,添加如下代码
#ifndef FACTORIAL_H
#define FACTORIAL_H
extern "C" _declspec(dllexport) int factorial(int n);
#endif
在factorial.cpp文件中,添加如下代码
// factorial.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
int factorial(int n)
{
n++;
return n;
}
选择"Build"->"Build factorial"命令 即可。
2.2Win32DLL的使用
使用方式同MFC的DLL一样,也具备两种方式。
本文出自 “代码” 博客,请务必保留此出处http://andydeng.blog.51cto.com/4768445/838494
相关文章推荐
- 如何使用C/C++为Python编写DLL/SO
- [JNA系列]Java调用Delphi编写的Dll之JNA使用
- Win7下使用VS2013编写的ActvieX在XP下注册提示:LoadLibrary("XXX.dll")失败-找不到指定的程序
- 使用VC编写VB使用DLL
- c++编写供其他工具使用的dll
- DLL编写和使用
- Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】
- 使用PB编写dll文件
- VS使用QT编写dll程序
- Windows下如何使用QT编写dll程序
- Visual studio2010 编写dll 及 使用dll
- vs2010编写dll库供python使用
- C/C++编写dll动态链接库使用操作与非基本类型参数声明错误
- Visual studio2010 编写dll 及 使用dll
- 使用 gtest 给 DLL 工程编写单元测试
- 使用PB编写dll文件---看介绍source文件的地方
- DLL库的编写(导出、导入)与使用
- 使用Delphi调用C++编写的DLL
- VC++6.0中编写DLL详细步骤及其使用
- VC++编写DLL供C#使用