手工编写动态链接库
来源:互联网 发布:中信档案管理系统软件 编辑:程序博客网 时间:2024/05/17 08:27
如何手工编写动态链接库(windows dll)
1.本例介绍在命令行(Console)环境下制作dll的方法
2.读者动手前,请确保在windows中安装有编译、链接工具和必要的函数库文件。
3.本例使用C语言实现.
4.本例中使用路径均为我机器上的绝对路径,读者需根据实际情况调整。
工具要求:
Microsoft的编译器cl.exe
MIcrosoft链接器link.exe
dll制作步骤:
1.编写dll函数实现源代码hello.c
#include "stdio.h"
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 INCLUDE LIB 3个环境变量.
SET LIB=c:\Program Files\Microsoft Visual Studio 8\VC\lib;e:\dll\hellotest\;%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,必须把上面的声明
1.本例介绍在命令行(Console)环境下制作dll的方法
2.读者动手前,请确保在windows中安装有编译、链接工具和必要的函数库文件。
3.本例使用C语言实现.
4.本例中使用路径均为我机器上的绝对路径,读者需根据实际情况调整。
工具要求:
Microsoft的编译器cl.exe
MIcrosoft链接器link.exe
dll制作步骤:
1.编写dll函数实现源代码hello.c
#include "stdio.h"
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 INCLUDE LIB 3个环境变量.
说明:
1. 运行cl.exe编译发生:没有找到 mspdb80.dll 的解决办法,如果安装的是Visual Studio 2005的话,path中包含C:\Program Files\Microsoft Visual Studio 8\Common7\IDE即可
2. e:\dll\hellotest path中包含生成的hello.dll的路径
3. e:\dll\hellotest lib中包含生成hello.lib的路径。
SET PATH=c:\Program Files\Microsoft Visual Studio 8\VC\bin;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;e:\dll\hellotest\;%PATH%
SET INCLUDE=c:\Program Files\Microsoft Visual Studio 8\VC\include;%INCLUDE%
SET LIB=c:\Program Files\Microsoft Visual Studio 8\VC\lib;e:\dll\hellotest\;%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);
文章出自:http://topic.csdn.net/u/20071230/13/8f414a5d-e489-4206-91a3-0bf7d31b784b.html 十二楼
- 手工编写动态链接库
- 如何手工编写动态链接库(windows dll)
- 如何手工编写动态链接库(windows dll)
- 如何手工编写动态链接库(windows dll)
- 如何编写动态链接库
- vc编写动态链接库
- 编写.dll动态链接库
- Linux下编写动态链接库
- 为Symbian编写动态链接库DLL
- 为Symbian编写动态链接库DLL
- 为Symbian编写动态链接库DLL
- 为Symbian编写动态链接库DLL
- 为Symbian编写动态链接库DLL
- 编写VC++动态链接库(DLL)
- 为Symbian编写动态链接库DLL
- linux下如何编写动态链接库
- VC++编写动态链接库及其使用
- VB编写.DLL动态链接库文件
- java(编程语言)学校心得 感觉写的很好就拿来了
- HDOJ 1874 畅通工程续 (最短路)
- QTP描述性编程原理介绍
- oracle attack module
- 对于Android Service 生命周期进行全解析
- 手工编写动态链接库
- c/c++ 文件操作小练
- 很囧的翻译
- 查询某个html中的某个个字符串的个数
- unity3D网络入门教程
- 【Python web 开发】 bottle 简单教程 (四)
- Eclipse上GIT插件使用手册之一_安装EGIT插件
- 使用 Oracle GoldenGate 进行实时数据集成
- 安装tomcat native library提升Tomcat的吞吐性能