VC6新建一个Win32 Dynamic-Link Library工程,Dll代码:
#include "stdafx.h"
#include "eddy1.h"
#include <stdio.h>
HMODULE g_hModule;
BOOL APIENTRY DllMain( HANDLE hModule, //本模块句柄
DWORD ul_reason_for_call, //调用原因
LPVOID lpReserved //保留
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH: //表示动态链接库刚被某个进程加载
g_hModule = (HMODULE)hModule;
break;
}
return TRUE;
}
// 自定义导出函数
void fnEddy1(LPCTSTR pszContent)
{
int ch = '\\';
char sz[MAX_PATH];
GetModuleFileName(g_hModule,sz,MAX_PATH);
MessageBox(NULL,pszContent,strrchr(sz,ch)+1,MB_OK);
}
为了将函数导出供其他模块使用,在eddy1.h文件中加入如下声明:
//声明要导出的函数
EDDY1_API void fnEddy1(LPCTSTR pszContent);
调用Dll(有两种方式,动态和静态,下面是静态调用)
新建一个Win32 Console Application,代码如下:
#include "stdafx.h"
#include "eddy1.h"
//指明连接到库
#pragma comment (lib,"eddy1")
int main(int argc, char* argv[])
{
fnEddy1("我来自一个Dll!");
return 0;
}
注意:运行此程序时需要dll文件和exe文件在同一目录。另外,编译前需要把dll工程中编译生成的eddy1.h和eddy1.lib文件copy到当前工程目录下。
已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/133.html 欢迎订阅Eddy Blog。