用c语言编写dll函数 c语言使用dll

如何用VC编写dll文件VC编写dll文件
1、VC++-New-Project-Win32 Dynamic_Link Library;
2、选择创建一个空工程;
首先DLL需要一个头文件用c语言编写dll函数,所以新建一个C\C++ Header File
这个头文件中必须包含想要输出用c语言编写dll函数的变量和函数 , 头文件必须定义用于输出的任何符号和数据结构 。
例如 :
这里边又一个预定义
#ifdef MYLIBAPI
#else
#define MYLIBAPI extern "C" __declspec(dllimport)
#endif
为什么要加这一句呢?
因为相同的函数被C++编译后在符号库中的名字与C语言编译后的不同,所以如果使用的是标准C就要告诉编译器,要保留原来的名字 , 这里用extern “C”来实现 。
当然DLL还需要一个源文件,在工程中新建一个 C++Source File
代码如下,此代码 中的宏定义是必须的 。
编译以后 , 会在工程的DEBUG文件夹下生成一个DLL文件 。这样DLL文件就创建成功 。
下面展示一下如何使用这个DLL 。代码如下,这里是显示引用DLL 。
运行以后程序就会输出用c语言编写dll函数:1+2=3
证明调用动态链接库里的 Add函数成功 。
dll文件如何用C语言生成用vc6.0下的cl.exe和link.exe工具,请读下文:
声明:下面这篇文章不是我写的,源自:一个叫,有容乃大的博客
如何手工编写动态链接库(windowsdll)
1.本例介绍在命令行(Console)环境下制作dll的方法
2.读者动手前,请确保在windows中安装有编译、链接工具和必要的函数库文件 。
3.本例使用C语言实现.
4.本例中使用路径均为我机器上的绝对路径,读者需根据实际情况调整 。
工具要求:
Microsoft的编译器cl.exe
MIcrosoft链接器link.exe
dll制作步骤:
1.编写dll函数实现源代码hello.c
#include
intsay_hello(char*name)
{
printf( "hello%s\n ",name);
return1;
}
2.编写dll函数输出定义文件hello.def.
LIBRARYhello
EXPORTS
say_hello@1
3.编译dll源码,生成dll,lib文件.
3.1新建命令行窗口
3.2设置PATH?0?7INCLUDE?0?7LIB3个环境变量.
SETPATH=K:\vcnet\vc7\bin;%PATH%
SETINCLUDE=K:\vcnet\vc7\include;%INCLUDE%
SETLIB=K:\vsnet\Vc7\lib;%LIB%
3.3编译hello.c
cdK:\Source\dllsample(hello.c和hello.def所在目录)
cl/chello.c
3.4链接hello.obj,生成hello.dll,hello.lib两个文件.
link/def:hello.def/dllhello.obj
4.测试dll函数.
4.1编写测试代码test.c
externintsay_hello(char*name);
intmain(intargc,char**argv)
{
say_hello( "robbie ");
【用c语言编写dll函数 c语言使用dll】return0;
}
4.2编译测试代码test.c
cl/ctest.c
4.3链接test.obj和hello.lib,生成可执行文件test.exe
linktest.objhello.lib
4.4运行test.exe,屏幕输出:
hellorobbie
至此,一个dll构造完毕.
下面是我自己的一点补充:
如果要在c++下 , 或者win32mfc下使用标准c写的dll,必须把上面的声明
externintsay_hello(char*name);改成:extern"C "intsay_hello(char*name);
c语言怎么调用dll文件?1、新建DLLTest文件夹用c语言编写dll函数,在该文件夹中新建source文件夹 。
2、在source文件夹中造add.c 。
3、win+R+cmd请出总指挥“命令行”用c语言编写dll函数 , 输入 。
4、继续输入(路径也要随机应变)link /DLL /out:E:\VCfile\DLLTest\source\add.dll E:\VCfile\DLLTest\source\add.obj 。
5、新建源文件call_dll.c或.cpp放到DLLTest文件夹 , 同时add.dll也复制过来 。
6、编译 , 连接运行出现个5 。调用成功 。
注意事项:

推荐阅读