c语言函数写成dll c语言如何生成dll文件( 二 )


C语言程序怎么编译成dll文件供其他语言调用?C程序编译成dll文件只不过是在要公开c语言函数写成dll的接口函数声明前面加上几个特定c语言函数写成dll的修饰符而已 。
下面是个例子c语言函数写成dll,用dev-cpp建c语言函数写成dll了个dll的默认文档
/*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_ */
/*dllmain.c文件*/
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include windows.h
#include stdio.h
#include stdlib.h
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;
}
具体请参考jilei08124的CSDN博客
用C语言编写DLL下面就是一个dll的主函数 。加上一个空的导出函数.链接的时候目标是dll或者建立dll工程 。连接器里面有设置
#includewindows.h
__declspec(dllexport) void FuncInDll (void)
{}
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void* lpReserved)
{
HANDLE g_hModule;
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
g_hModule = (HINSTANCE)hModule;
break;
case DLL_PROCESS_DETACH:
g_hModule=NULL;
break;
}
return TRUE;
}
注册表操作有一系列API函数可以调用 。你可以在MSDN搜索以Reg开头的API如RegOpenKey,然后旁边一堆相关的注册表API 。
注册表键值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下添加项可以实现开机启动 。
当然还有其它方法 。
关于c语言函数写成dll和c语言如何生成dll文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

推荐阅读