一、创建----常规MFC DLL动态链接工程:
1.创建常规MFC DLL动态工程
2.从DLL导出函数:
_declspec(dllexport)
3. .def文件添加定义
; SerialPortDll.def : 声明 DLL 的模块参数。
LIBRARY
EXPORTS
; 此处可以是显式导出
ShowTime @1 ;@1表示ShowTime函数对应的数字序号为1
test @2
4.应用程序中申明导入函数:_declspec(dllimport)
5.访问动态链接库:
隐式链接
1.DLL库工程头文件
#ifdef DllDemo_EXPORTS
#define DllAPI __declspec(dllexport)
#else
#define DllAPI __declspec(dllexmport)
extern "C" //原样编译
{
void __stdcall ShowTime(); //__stdcall使非C/C++语言内能够调用API
}
#endif
2.DLL库工程源文件
void __stdcall ShowTime()
{
CString strtime;
SYSTEMTIME systime;
GetLocalTime(&systime);
strtime.Format(_T("现在时间是: %d 年 %d 月 %d 日 %d 时 %d 分 %d 秒"),
systime.wYear, systime.wMonth, systime.wDay,
systime.wHour, systime.wMinute, systime.wMilliseconds);
MessageBox(NULL, strtime, _T("Time"), NULL);
}
4.应用头文件(隐式链接)
#define DllAPI __declspec(dllimport)
#pragma comment(lib,"SerialPortDll.lib") //在编辑器link时,链接到DllDemo.lib文件
extern "C"
{
void __stdcall ShowTime();
}
5.应用源文件
1.创建常规MFC DLL动态工程
2.从DLL导出函数:
_declspec(dllexport)
3. .def文件添加定义
; SerialPortDll.def : 声明 DLL 的模块参数。
LIBRARY
EXPORTS
; 此处可以是显式导出
ShowTime @1 ;@1表示ShowTime函数对应的数字序号为1
test @2
4.应用程序中申明导入函数:_declspec(dllimport)
5.访问动态链接库:
隐式链接
显示链接
1.DLL库工程头文件
#ifdef DllDemo_EXPORTS
#define DllAPI __declspec(dllexport)
#else
#define DllAPI __declspec(dllexmport)
extern "C" //原样编译
{
void __stdcall ShowTime(); //__stdcall使非C/C++语言内能够调用API
}
#endif
2.DLL库工程源文件
void __stdcall ShowTime()
{
CString strtime;
SYSTEMTIME systime;
GetLocalTime(&systime);
strtime.Format(_T("现在时间是: %d 年 %d 月 %d 日 %d 时 %d 分 %d 秒"),
systime.wYear, systime.wMonth, systime.wDay,
systime.wHour, systime.wMinute, systime.wMilliseconds);
MessageBox(NULL, strtime, _T("Time"), NULL);
}
4.应用头文件(隐式链接)
#define DllAPI __declspec(dllimport)
#pragma comment(lib,"SerialPortDll.lib") //在编辑器link时,链接到DllDemo.lib文件
extern "C"
{
void __stdcall ShowTime();
}
5.应用源文件
ShowTime();
四、注意
生成的Dll和Lib存放在源码处(不是放在生成的Debug文件中)