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

要做自己的 动态连接库,首先要知道DLL在VC5.0中都有哪几种分类。

VC支持三种DLL,它们是: 1.Non-MFC Dlls 2.Regular Dlls 3.Extension Dlls Note:翻译措辞不当,故遇到术语是引用原词 Non-MFC DLL:指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一 般用的是标准C接口,并能被非MFC或MFC编写的应用程序所调用。LL, Regular DLL:和下述的Extension Dlls一样,是用MFC类库编写的。

明显的特点是 在源文件里有一个继承CWinApp的类。其又可细分成静态连接到MFC和动态连接到MFC上 的。

但静态连接到MFC的动态连接库只被VC的专业般和企业版所支持。 Extension DLL:用来实现从MFC所继承下来的类的重新利用,也就是说,用这种类 型的动态连接库,可以用来输出一个从MFC所继承下来的类。

Extension DLL使用MFC的 动态连接版本所创建的,并且它只被用MFC类库所编写的应用程序所调用。 各位看到这里如果眼有点花或头有点晕,请别泄气,再看两遍,然后继续往下看, 定有收获。

标 题: 关于VC中的DLL的编程[1] 这一节介绍Non-MFC DLLs的编写方法。下面是一个通用的 写法: BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call, LPVOID lpReserved) { switch( ul_reason_for_call ) { case DLL_PROCESS_ATTACH: 。

. case DLL_THREAD_ATTACH: 。

. case DLL_THREAD_DETACH: 。

. case DLL_PROCESS_DETACH: 。

. } return TRUE; } 每一个DLL必须有一个入口点,这就象我们用C编写的应用程序一样, 必须有一个WINMAIN函数一样。

在这个示例中,DllMain是一个缺省的入口函数,你不需要编写自己 的DLL入口函数,并用linker的命令行的参数开关/ENTRY声明。用这个缺 省的入口函数就能使动态连接库被调用时得到正确的初始化,当然了,你 不要在初始化的时候填写使系统崩溃的代码了。

参数中,hMoudle是动态库被调用时所传递来的一个指向自己的句柄 (实际上,它是指向_DGROUP段的一个选择符) ul_reason_for_call是一个说明动态库被调原因的标志。当进程或线程 装入或卸载动态连接库的时候,操作系统调用入口函数,并说明动态连接库 被调用的原因。

它所有的可能值为: DLL_PROCESS_ATTACH: 进程被调用 DLL_THREAD_ATTACH: 线程被调用 DLL_PROCESS_DETACH: 进程被停止 DLL_THREAD_DETACH: 线程被停止 lpReserved是一个被系统所保留的参数。 入口函数已经写了,盛下的也不难,你可以在文件中加入你所想要输 出的函数或变量或c++类或、或、或、?好象差部多了。

Look here!现在就 要加入一个新的输出函数了: void _declspec(dllexport) JustSoSo() { MessageBox(NULL,"It's so easy!","Hahaha。

",MB_OK); } 要输出一个类也可以,如下: class _declspec(dllexport) Easy { //add your class definition。 }; 各位一定注意到在输出函数或类是我用到_declspec(dllexport), 这是VC提供的一个关键字,用它可在动态连接库中输出一个数据、一个函数或一个类。

用这个关键字可省你不少事,你不用在.DEF文件 中说明我要输出这个类、那个函数的。 Ok!各位照着上面的例子试着敲敲看,Just so easy! 先说到这了。

4. 用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

这有就应该没问题了

5. 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;

}

c语言dll怎么写

转载请注明出处育才学习网 » c语言dll怎么写

知识

英语书写体怎么写

阅读(202)

本文主要为您介绍英语书写体怎么写,内容包括英语音标书写体怎么写,英语书写体求范文,/英语字母的书写体在四线格怎么写。Dear liu meiYou are so kind.I would like to help you.Main ingredient

知识

郭日语怎么写

阅读(179)

本文主要为您介绍郭日语怎么写,内容包括郭日语怎么写,梦葡萄牙语怎么写,欲泰语怎么写大家帮下忙啊,郭海楠用日语怎么郭海楠用日语怎么写,王子芊怎样写好看。我的家乡在新郑,这里有许多名胜古迹,有风景优美的始祖山,还有历史悠久的黄帝故里,更有

知识

音乐家的英语怎么写

阅读(318)

本文主要为您介绍音乐家的英语怎么写,内容包括英语音乐家的单词怎么写,音乐家英语怎么说,英语音乐家的单词怎么写。Beethoven (LUDWIG VON BEETHOVERR,1770-1827) is born in a German Bonn

知识

疲劳英文怎么写的

阅读(225)

本文主要为您介绍疲劳英文怎么写的,内容包括疲劳的英语单词怎么写,疲劳的英语怎么写汉字,缓解疲劳英文怎么写。缓解疲劳,英语是:Relieve fatigue.详细解释:relieve 英[rɪˈli:v] 美[rɪˈliv] vt. 缓解; 解

知识

土地互换协议怎么写

阅读(180)

本文主要为您介绍土地互换协议怎么写,内容包括土地互换协议书怎么写,农村土地调换协议书的范本怎样写,互换土地协议书怎么写。土地互换协议书写法:首先题目为,土地调换协议书 。然后写清交换土地的人员名称。 范文如下如下: 经甲乙双方平等协

知识

李字笔画顺序怎么写的

阅读(195)

本文主要为您介绍李字笔画顺序怎么写的,内容包括李字的笔画顺序怎么写,李字的笔画顺序怎么写,李字的笔顺笔画顺序。

知识

小雪的英文怎么写

阅读(395)

本文主要为您介绍小雪的英文怎么写,内容包括小雪的英文怎么写,小雪的英语怎么写,“下小雪”英文怎么说。snowman英 [snəʊmæn] 美 [snomæn] n. 雪人短语The Snowman 雪人 ; 小雪人 ; 雪人专辑 ; 雪

知识

flash按钮添加代码怎么写

阅读(168)

本文主要为您介绍flash按钮添加代码怎么写,内容包括flash添加按钮,如何写代码可以链接进网页,FLASH怎样添加按钮代码,flash里面怎样在按钮上加代码。as3.0 在舞台上定义一个按钮或者影片剪辑,在属性栏命名为link_btn在时间轴上按F9调出动作

知识

搞笑的送花卡片怎么写

阅读(151)

本文主要为您介绍搞笑的送花卡片怎么写,内容包括送花卡片写什么,送花怎样写卡片,给恋人送花卡片怎么写。情人节就要到了,送给女朋友一束美丽的鲜花的同时再写上一张有着小小祝福的卡片,放在花中表达自己的爱!但是,这呢?经常会有人问,送花卡片不大

知识

3元的大写怎么写

阅读(188)

本文主要为您介绍3元的大写怎么写,内容包括金额是123145·3元的大写怎么写,3元填支票大写怎么写,人民币3,123,256,781元用大写怎么写。人民币3,123,256,781元用大写:叁拾壹亿贰仟叁佰贰拾伍万陆仟柒佰捌拾壹元整大写数字常识阿拉伯数字对应

知识

洗碗的英文怎么写的

阅读(971)

本文主要为您介绍洗碗的英文怎么写的,内容包括洗碗的英文是怎么写的,洗碗的英文怎么写一,洗碗的英文怎么写。wash the dishes洗碗,洗盘子短语I Wash The Dishes 我洗盘子They Wash The Dishes 他们

知识

三年级日记怎么写50字

阅读(243)

本文主要为您介绍三年级日记怎么写50字,内容包括小学三年级50字的日记怎么写,三年级日记50字大全百度,日记50字大全30篇。今天我与妈妈去了乡下,我一个人在田间的小路上散步.走着走着,一只正在缓慢爬动的小动物进入了我的眼球.仔细一瞧,原然是

知识

白事贴怎么写

阅读(243)

本文主要为您介绍白事贴怎么写,内容包括白事封包写法,白事请帖怎么写急急急急求解,白事封包怎么写。白事礼金信封写法:按照古代的书写习惯,一定要竖着写,才能保持传统的风格。这是汉民族的习俗,适用于全国大多数的地域。大多数都以旧式中文书写

知识

window的音标怎么写

阅读(154)

本文主要为您介绍window的音标怎么写,内容包括window的音标,window的音标是什么意思,lookoutofthewindow的音标怎么写。辅音部分(28个) [ p ] pot pig put people piano potato [ b ] book bag big j

知识

易语言怎么写

阅读(168)

本文主要为您介绍易语言怎么写,内容包括易语言怎么写出图片,易语言怎么写图片移动时的动作,用易语言怎么写一个,快速把多张图片拼在一起软件。给你个笨办法,软件界面先绘制个足够大的标签,然后在标签上绘制60个图片框,逐一设置图片地址,再设一

知识

c语言怎么写根号

阅读(198)

本文主要为您介绍c语言怎么写根号,内容包括c语言中怎么表示开根号,c语言中根号怎么打,c语言中怎么表示开根号。可以调用头文件math.h中的sqrt()函数。参考代码如下:对36开根号:#include<stdio.h>#include<math

知识

手机语言的英文怎么写

阅读(218)

本文主要为您介绍手机语言的英文怎么写,内容包括手机设置和语言设置的英文怎么写,手机的语言是英文的如何变为中文,语言用英语怎么写。国内手机QQ英语和汉语其实没有什么区别, 只是聊天的日期比如昨天会显示yesterday,聊天内容并不会变成英语

知识

我喜欢你的语言怎么写

阅读(179)

本文主要为您介绍我喜欢你的语言怎么写,内容包括"我喜欢你"各国语言的书写怎么写,”我喜欢你”各国语言写法,我爱你,各种语言怎么表达。中文:我喜欢你2、英语:I love you3、德语:Ich liebe dich.4、法语:Je taime / Je tadore5

知识

简历中语言怎么写

阅读(862)

本文主要为您介绍简历中语言怎么写,内容包括个人简历怎么写语言能力,个人简历中的语言能力怎么写,简历中语言水平一栏怎么填。根据自己所掌握的语种,语言听说读写方面的理解能力,所得证书等方面来写。一,语言有很多种,语言的能力也包括听、说、

知识

易语言配置项怎么写

阅读(222)

本文主要为您介绍易语言配置项怎么写,内容包括易语言读写配置项怎样写,易语言写配置项和读配置项的具体做法,易语言读写选择框的配置项怎么写。你分别调试输出你的代码中写配置项()和读配置项()命令,看看其中哪一条返回假,就可以判断是哪一步出错

知识

易语言怎么写配置项

阅读(215)

本文主要为您介绍易语言怎么写配置项,内容包括易语言写配置项和读配置项的具体做法,易语言写配置项和读配置项的具体做法是什么,易语言读写配置项怎样写。.版本 2.程序集 窗口程序集1.子程序 __启动窗口_创建完毕.如果 (文件是否存在 (取运行

知识

易语言怎么写更新

阅读(235)

本文主要为您介绍易语言怎么写更新,内容包括易语言怎么写公告更新,易语言怎么写软件自动更新,易语言怎么写软件更新。这个就有点麻烦了 我曾经写过 免费的你先注册一个百度账号然后开通百度空间然后把那些模块都去掉 或者隐藏了然后写一篇

[/e:loop]