c语言程序怎样生产dll文件,c语言如何生成dll文件.doc

PAGE / NUMPAGES

开发环境是DEV C++,采用C语言编写创建一个DLL项目,项目名称hello,DLL编写采用的是DEV C++中的示例代码头文件dll.h#ifndef _DLL_H_#define _DLL_H_

#if BUILDING_DLL# define DLLIMPORT __declspec (dllexport)#else /* Not BUILDING_DLL */# define DLLIMPORT __declspec (dllimport)#endif /* Not BUILDING_DLL */

DLLIMPORT void HelloWorld (void);

#endif /* _DLL_H_ */C文件dllmain.c#include #include 个人收集整理 勿做商业用途

DLLIMPORT void HelloWorld (){??? MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION);}个人收集整理 勿做商业用途

BOOL APIENTRY DllMain (HINSTANCE hInst???? /* Library instance handle. */ ,?????????????????????? DWORD reason??????? /* Reason this function is being called. */ ,?????????????????????? LPVOID reserved???? /* Not used. */ ){??? switch (reason)??? {????? case DLL_PROCESS_ATTACH:??????? break;个人收集整理 勿做商业用途

????? case DLL_PROCESS_DETACH:??????? break;

????? case DLL_THREAD_ATTACH:??????? break;

????? case DLL_THREAD_DETACH:??????? break;??? }

??? /* Returns TRUE on success, FALSE on failure */??? return TRUE;}还有要注意的在.def文件中指定输出的函数,编译生成了hello.dll文件DLL调用部分dllcall.c#include #include #include 个人收集整理 勿做商业用途

HINSTANCE hDLL; //定义DLL包柄typedef void ( *func)();??? //定义函数指针原型 func hello;? //定义函数指针int main(){?if (hDLL == NULL)??? hDLL=LoadLibrary("hello.dll");??//加载DLL?hello = (func)GetProcAddress(hDLL,"HelloWorld"); //获取函数指针?hello();?FreeLibrary(hDLL);? //释放DLL?return 0;}个人收集整理 勿做商业用途

编译执行

/*c语言调用dll里的函数-例子2之文件下载 都5点了,还是睡不着,躺在床上

想着该做点撒,于是乎,开始查找了下资料,大致弄清楚了c里怎么调用dll

里的函数,就写了个文件下载的例子,很简单,调用系统本身的UrlMon.dll

里的 URLDownloadToFileA 函数,之前的例子一是过程的调用,现在这个是

函数的调用,都很简单。*/

#include

#include

typedef int (*MYFUNC)(PVOID,char*,char*,int,char*); /* 函数原型*/ 个人收集整理 勿做商业用途

int main()

{

HINSTANCE LibHandle;

MYFUNC FUNCADD;

char dllbuf[] = "UrlMon.dll";

char sysbuf[] = "URLDownloadToFileA"; /*函数名*/

char *downfile = "/img/logo-yy.gif"; /*过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值