c语言怎么写dll

1.用C语言如何写DLL?//head file: asd.h
#ifdef _cplusplus
extern "C"{
#else
#endif
#ifdef HEAD_DLL
#define DLL_EXPORT _declspec(dllexport)
#else
#define DLL_EXPORT
#endif
int DLL_EXPORT asd_main(char* file_in, char* file_out);
#ifdef _cplusplus
}
#endif
//C file: asd.c
#include "asd.h"
int DLL_EXPORT asd_main(char* file_in, char* file_out)
{
FILE *in, *out;
in = fopen(file_in,"rb");
if(in == NULL)
return 0;
out = fopen(file_out,"wb");
if(out == NULL)
return 0;
//add code what you want:

}
2.用C语言编写DLL下面就是一个dll的主函数 。加上一个空的导出函数.链接的时候目标是dll或者建立dll工程 。连接器里面有设置
#include<windows.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下添加项可以实现开机启动 。
当然还有其它方法 。
3.C程序如何调用dll 文件用的IDE不一样,生成DLL文件的方法也有差异,建议上网查找你所用的IDE生成DLL文件的方法 。
***********************************************
这个关键是IDE(比如是VC++还是BCB),C语言在编DLL和其它的程序时都用相同的规则 。
***********************************************
看不懂建议暂时就不要自己做了,在这里说和你看网上资料是一样的,而且这里可以说的内容还不及网上多呢 。
4.C语言如何调用DLL//dll
#include <windows.h>
extern "C" //保持C语言文件
void _declspec ( dllexport ) tryProc() //定义函数
{
MessageBox(NULL,_T("a"),_T("a"),MB_OK);
}-------------------------------------
//C
#include <windows.h>
int main()
{
HMOUDLE dll = LoadLibrary(/*DLL文件名*/);
if(dll != NULL)
{
FARPROC try = GetProcAddress(dll,"tryProc");
if(try != NULL)
{
tryProc();//假如函数有返回值,可以用try()得到返回值
/*_asm call tryProc*/
}
}
return 0;
}
5.用C语言如何写DLL动态链接库这是我以前的回答,是个两数加法的例子,看了就明白了
你的dll不必用h头文件,你用的是显式声明导出函数
vc在显式声明函数时会出现与vb不匹配的问题,他会把函数名改了,你必须用隐式声明,就是def文件声明才可以 。
你的cpp里直接写
int __stdcall add(int a, int b)
{
return (a+b);
}
然后再在工程里添加一个文本文件,注意,文件名是 makedll(如果不对就是工程名).def
里面写
LIBRARY makedll
EXPORTS
add @1
然后保存
编译、连接
得到的dll就是vb可以调用的了
vb里呢,不用怎么改
如下
Public Declare Function add Lib "makedll.dll" (ByVal a As Integer,ByVal b As Integer) As Integer
Private Sub Command1_Click()
Dim c As Integer
c = add(1, 2)
MsgBox c
End Sub
【c语言怎么写dll】这有就应该没问题了