dll文件如何用C语言生成

如题所述

用 vc 6.0 下的cl.exe 和 link.exe工具,请读下文:
声明:下面这篇文章不是我写的,源自:一个叫,有容乃大 的博客

如何手工编写动态链接库(windows dll)

1.本例介绍在命令行(Console)环境下制作dll的方法
2.读者动手前,请确保在windows中安装有编译、链接工具和必要的函数库文件。
3.本例使用C语言实现.
4.本例中使用路径均为我机器上的绝对路径,读者需根据实际情况调整。

工具要求:

Microsoft的编译器cl.exe
MIcrosoft链接器link.exe

dll制作步骤:
1.编写dll函数实现源代码hello.c

#include

int say_hello(char* name)
{
printf( "hello %s\n ", name);
return 1;
}

2.编写dll函数输出定义文件hello.def.

LIBRARY hello
EXPORTS
say_hello @1

3.编译dll源码,生成dll,lib文件.

3.1 新建命令行窗口
3.2 设置PATH �0�7 INCLUDE �0�7 LIB 3个环境变量.

SET PATH=K:\vcnet\vc7\bin;%PATH%
SET INCLUDE=K:\vcnet\vc7\include;%INCLUDE%
SET LIB=K:\vsnet\Vc7\lib;%LIB%

3.3 编译hello.c

cd K:\Source\dllsample (hello.c和hello.def所在目录)
cl /c hello.c

3.4 链接hello.obj,生成hello.dll,hello.lib两个文件.

link /def:hello.def /dll hello.obj

4.测试dll函数.

4.1 编写测试代码 test.c

extern int say_hello(char* name);
int main(int argc,char** argv)
{
say_hello( "robbie ");
return 0;
}

4.2 编译测试代码test.c

cl /c test.c

4.3 链接test.obj和 hello.lib,生成可执行文件test.exe

link test.obj hello.lib

4.4 运行test.exe,屏幕输出:

hello robbie

至此,一个dll构造完毕.

下面是我自己的一点补充:
如果要在c++下,或者win32 mfc下使用标准c写的dll,必须把上面的声明
extern int say_hello(char* name);改成:extern "C " int say_hello(char* name);
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-15
在编译的时候,选择DLL选项就可以生成了.当然你的程序,要符合DLL的规范,比如要引出至少一个函数什么的.把main换成dllmain

如何用VC编写dll文件
1、VC++->New->Project->Win32 Dynamic_Link Library;2、选择创建一个空工程;首先DLL需要一个头文件,所以新建一个C\\C++ Header File 这个头文件中必须包含想要输出的变量和函数,头文件必须定义用于输出的任何符号和数据结构。例如 :这里边又一个预定义 ifdef MYLIBAPI else define MYLIBAPI extern...

c语言怎么调用dll文件?
1、新建DLLTest文件夹,在该文件夹中新建source文件夹。2、在source文件夹中造add.c。3、win+R+cmd请出总指挥“命令行”,输入。4、继续输入(路径也要随机应变)link \/DLL \/out:E:\\VCfile\\DLLTest\\source\\add.dll E:\\VCfile\\DLLTest\\source\\add.obj。5、新建源文件call_dll.c或.cpp放到DL...

C语言,怎么生成dll文件?
到cmd下用vc的编译器cl.exe编译fixupdemo.c

c怎么生成dll文件?
4.3 链接test.obj和 hello.lib,生成可执行文件test.exe link test.obj hello.lib 4.4 运行test.exe,屏幕输出:hello robbie 至此,一个dll构造完毕.下面是我自己的一点补充:如果要在c++下,或者win32 mfc下使用标准c写的dll,必须把上面的声明 extern int say_hello(char* name)...

怎样用C编写DLL?
Non-MFC DLL:指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一 般用的是标准C接口,并能被非MFC或MFC编写的应用程序所调用。LL,Regular DLL:和下述的Extension Dlls一样,是用MFC类库编写的。明显的特点是 在源文件里有一个继承CWinApp的类。其又可细分成静态连接到MFC和动态连接到...

dll文件如何反汇编成源码,C++语言编写
IDA将反汇编生成的结果存入IDB文件中。当你确认反汇编的结果达到你的要求,可以让IDA输出汇编源代码,IDA也提供其他格式的输出,例如HTML文件,便于用户阅读。楼主主要是用于分析DLL文件,一般来说这类文件更适合做静态分析,所以推荐使用IDA来进行。IDA对于分析那些加壳或含有大量花指令、混淆代码、垃圾代码的...

如何使用lib生成dll
用vc生成dll需要按照一定的框架:BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved ){ return TRUE;} extern "C" void __declspec(dllexport) mydllfunc(){ ...}

关于C语言的 我想写一个程序 让它生成一个dll文件和另一个exe文件 该...
回答:创建一个vc项目,同时创建关联一个动态链接库项目最后生成的就是一个dll与exe文件,运行时缺一不可

c调用cdll
1、定义DLL函数的原型,port)关键字即可。例如porttttb);2、加载DLL文件,在C语言中,需要使用LoadLibrary函数来加载DLL文件。LoadLibrary函数的参数是DLL文件的路径,如果DLL文件在当前目录下,则可以直接使用文件名。3、获取DLL函数地址,在C语言中,需要使用GetProcddress函数来获取DLL函数的地址,这样才能...

C程序如何调用dll 文件
编译成功后会生成一个dll文件。再新建一个普通的win32 console工程,工程属性里面的字符集要设为多字节,不要使用Unicode。将dll文件放到目录下面。新建并添加main.c include <WINDOWS.H> include <WINBASE.H> include <stdio.h> typedef int (*MYPROC)(int, int);int main(){ HINSTANCE LibHandle...

相似回答