看过许多有关DLL的文章,但很少有关于调用方面的具体实例,高手能否讲讲关于调用的实现。最好能给一个简单的在MFC中调用的源代码。
解决方案 »
- 大家帮忙看个程序
- drawtext与Textout问题
- 关于使用mysql connector的问题
- VC中用ADO操作ACCESS数据库的问题.......
- redhat9.0 下操作SDRAM的奇怪问题,相信有同行遇到内似的问题,麻烦指点,谢谢!
- 联想150c和康柏m2051ap选哪个呀?
- 关于CTreeControl的问题,请帮忙!
- ado of VC++
- 怎样操纵CListCtrl的子项目?
- 请问可以在一个COM对象里面实现两种接口么?
- 请教CBitmapButton::AutoLoad的用法
- VC+ADO操作ACCESS时,如果读取字段值为数字"0.004",那么显示出来却".004"?
typedef BOOL (CALLBACK *StartHook)();
StartHook instkbhook;
HINSTANCE hinstDLL = LoadLibrary((LPCTSTR) "MyDll.dll");
instkbhook = (StartHook)GetProcAddress(hinstDLL, "StartHook");
instkbhook();
Type 选 MFC AppWizard(dll),输入工程名称,例如“dlldll”。
2,在 “What type of DLL would you like to create?”处选择:
Regular DLL useing shated MFC DLL,全部用缺省值。点“Finish”。
3,为了简单起见,我只讨论最简单的情况,大家可以由此推及其他。
设该 DLL 只有一个函数:msg(),只输出一句给定的信息。
三个主要的文件如下:// 文件一:dlldll.h : main header file for the DLLDLL DLL
//
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
void msg(HWND hWnd,CString str);
// 文件二:dlldll.cpp : Defines the initialization routines for the DLL.
//
#include "stdafx.h"
#include "dlldll.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
void msg(HWND hWnd,CString str)
{
MessageBox(hWnd,str,"DLL Runing!",MB_OK);
}
; 文件三:dlldll.def : Declares the module parameters for the DLL.LIBRARY "DLLDLL"
DESCRIPTION 'DLLDLL Windows Dynamic Link Library'EXPORTS
; Explicit exports can go here
msg @1
; ~~~~~~~此句要自己加,必须的。 4、编译连接后,生成文件:dlldll.lib、dlldll.dll。
还有一个有用的文件是:dlldll.h。二:如何使用 DLL:
1、新建立一个工程,比如一个对话框 usedll。
全部用缺省值。 2、用 ClassWizard 建立 OnOK() 消息:
void CUsedllDlg::OnOK()
{
msg(m_hWnd,"OK");
}同时在该文件“usedlldlg.cpp”的头部加入如下语句:
#include "dlldll.h"
别忘了把“dlldll.h”、“dlldll.dll”、“dlldll.lib”
三个文件拷贝到你的目录中。 3、做如下的设置:
Build \ Settings... \ 选 link 页 \ Category 为 Input \
Object/library modules 为 d:\projects\usedll\dlldll.lib
就是你的 dlldll.lib 所在的完整路径和文件名称。
如果和你的不同,请自行修改。
“OK” 它。
4、编译连接,运行,点“OK”按钮时,应该弹出一个对话框:
标题为“DLL Runing!”,有个“确定”按钮和“OK”的信息。
将".h"文件和lib文件包含到你的工程中,你就象调用自己的类函数一样调用吧。
是不是很方便。
lldll.def : error LNK2001: unresolved external symbol msg
Debug/dlldll.lib : fatal error LNK1120: 1 unresolved externals
LINK : fatal error LNK1141: failure during build of exports file
Error executing link.exe.