急!谁能帮忙写一个dll和调用此dll的简单例子!

ysp24 2004-03-24 10:11:17
新手上路,万分着急!恳请大家帮忙!谢了!
简单点没关系!只要能让我知道这种方法或机制!
最好是正则dll.在此多谢了!
...全文
32 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rivershan 2004-03-24
  • 打赏
  • 举报
回复
按照以下步骤来完成:

1)先来建立DLL。在VC菜单中File->New新建一个命名为ExplicitDLL的Win32 Dynamic-Link Library工程,下一步选择A simple DLL project。可以看到VC的AppWizard为我们准备了一个DllMain函数,本例中我们不用去改动它。

2)在ExplicitDLL.cpp之中添加两个函数foo1和foo2,代码如下:

void foo1()
{
MessageBox(NULL,"Called foo1 by function name!",NULL,MB_OK);
}

void foo2()
{
MessageBox(NULL,"Called foo2 by function ordinal!",NULL,MB_OK);
}

3)在VC菜单中File->New新建一个命名为ExplicitDLL.def的Text file,VC会自动将它加入到工程之中。在ExplicitDLL.def之中添加如下代码:

LIBRARY ExplicitDLL

EXPORTS
foo1 @1
foo2 @2

在这里,我们使用了模块定义文件(.def)的方式导出了2个函数。

4)编译工程,生成ExplicitDLL.dll。

5)在来建立调用程序。在VC菜单中File->New新建一个命名为UseExplicit的Win32 Console Application工程,下一步选择a simple application。并将ExplicitDLL.dll这个文件复制到工程目录内的Debug文件夹之中。

6)在UseExplicit.cpp之中包含windows.h头文件,并且在main函数之中添加如下代码:

typedef void (*foo1PROC)(void);
typedef void (*foo2PROC)(void);

HMODULE hDLL;
foo1PROC ProcFoo1;
foo2PROC ProcFoo2;

hDLL = LoadLibrary("ExplicitDLL");

if (hDLL != NULL)
{
ProcFoo1 = (foo1PROC) GetProcAddress(hDLL, "foo1");

if(!ProcFoo1)
MessageBox(NULL,"Call foo1 error!",NULL,MB_OK);
else
ProcFoo1();

ProcFoo2 = (foo2PROC) GetProcAddress(hDLL, MAKEINTRESOURCE(2));

if(!ProcFoo2)
MessageBox(NULL,"Call foo2 error!",NULL,MB_OK);
else
ProcFoo2();

FreeLibrary(hDLL);
}
else
MessageBox(NULL,"Load ExplicitDLL.dll error!",NULL,MB_OK);

7)编译运行UseExplicit.exe,可以看到两个弹出对话框,程序运行成功。
kpld8888 2004-03-24
  • 打赏
  • 举报
回复
要么?我的qq是101059899。我给你发一份

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧