用VS制作简单dll的过程 C和c++版本
来源:互联网 发布:奥迪a6l矩阵式led大灯 编辑:程序博客网 时间:2024/06/01 10:48
创建dll的过程其实并不难,但是MDN上明确表示对于C++制作的dll支持的不好,因此要使用的dll必须是C语言规范的,于是我就打算用VC6.0来做这个dll。做了整整一下午,不断的查阅资料,终于还是没能做出来。后来我改用VS2010来试了一下,发现成功了。编写最简单的dll过程如下:
首先用VS2010新建一个win32项目,然后选择dll、空项目。
在建立的空项目里面添加三个文件:lib.h、lib.c和lib.def。然后build一下就可以在debug目录下生成一个dll文件和一个lib文件
要测试生成的这个dll,可以新建一个空的控制台应用程序,然后其main.c如下(注意这是C方式,因此main.c而不是main.cpp):另外,采用这种静态调用的方式需要将生成的dll文件和lib文件复制到main.c相同目录下。
注意与C方式的区别,这里有extern "C"
C与C++方式的不同在于函数声明处,不管是头文件还是实现文件,只要是在声明函数,这两种方式就不一样。
下面是c++方式的测试代码,同样也是新建一个控制台应用程序空项目,main.cpp文件内容为:
与C方式的不同也就在于有没有extern "C" 。
http://www.blogjava.net/wxb_nudt/archive/2007/09/11/144371.html
http://ks.pconline.com.cn/?q=VC%2B%2B%B6%AF%CC%AC%C1%B4%BD%D3%BF%E2%28DLL%29%B1%E0%B3%CC%C9%EE%C8%EB%C7%B3%B3%F6&Submit3=%BF%EC%CB%D1
首先用VS2010新建一个win32项目,然后选择dll、空项目。
在建立的空项目里面添加三个文件:lib.h、lib.c和lib.def。然后build一下就可以在debug目录下生成一个dll文件和一个lib文件
也可以在空项目中添加这三个文件:lib.h、lib.cpp和lib.def。同样build一下就可以得到一个dll文件和一个lib文件,这是C++方式,前面一种是C的方式
这个dll实现了一个add函数。下面贴出上述六个文件的代码。
C的方式
lib.h文件的内容如下:lib.c文件的内容如下:lib.def的内容如下:要测试生成的这个dll,可以新建一个空的控制台应用程序,然后其main.c如下(注意这是C方式,因此main.c而不是main.cpp):另外,采用这种静态调用的方式需要将生成的dll文件和lib文件复制到main.c相同目录下。
C++的方式
所对应的三个文件及测试函数,首先是lib.h,内容如下:注意与C方式的区别,这里有extern "C"
lib.cpp文件内容如下:
lib.def文件内容:
C与C++方式的不同在于函数声明处,不管是头文件还是实现文件,只要是在声明函数,这两种方式就不一样。
下面是c++方式的测试代码,同样也是新建一个控制台应用程序空项目,main.cpp文件内容为:
与C方式的不同也就在于有没有extern "C" 。
总结一下在做dll的过程中最重要的是要搞清楚谁对应谁,只要是在c++里面调用到C的函数就必须加上extern "C" 虽然没有尝试过用C++来测试C的dll,但想必也是这样,有兴趣的可以一试。
dll其实有很多类型的,我只是去研究了最简单的dll的实现方式,其他类型的dll我遇到的都忽略了,下面给出几个我在查找资料过程中遇到的感觉比较好的资料,想研究dll的可以去参考参考。
参考资料
http://wenwen.soso.com/z/q118568910.htmhttp://www.blogjava.net/wxb_nudt/archive/2007/09/11/144371.html
http://ks.pconline.com.cn/?q=VC%2B%2B%B6%AF%CC%AC%C1%B4%BD%D3%BF%E2%28DLL%29%B1%E0%B3%CC%C9%EE%C8%EB%C7%B3%B3%F6&Submit3=%BF%EC%CB%D1
http://blog.csdn.net/btwsmile/article/details/6676802
- 2楼
- 1楼
阅读全文
0 0
- 用VS制作简单dll的过程 C和c++版本
- 用VS制作简单dll的过程
- c语言制作dll
- C++Builder、C#、VC调用 C++Builder制作的DLL
- C入门:用C写简单的DLL
- 制作简单的DLL
- C++调用C#组件的制作过程
- C#:EXCEL版本与相应dll版本的对应关系
- VS下C的dll打包与调用
- 用c语言制作简单的成绩判断系统
- 简单C语言通讯录的制作
- c#.net存储过程版本的分页
- C++如何调用delphi制作的dll
- 【C++】简单实现String类--深拷贝的普通版本和简洁版本
- curl的简单封装(c版本)
- VS高版本编写C程序的C4996错误
- MATLAB修改C编辑器的VS版本问题
- 获取SVN版本信息更新exe,dll文件的版本信息(C++, C#)
- 用js给div绑定事件,实现点击切换效果的几种方式总结
- Thread
- rathat网络配置
- Dubbo之——几种负载均衡算法
- 安装laravel
- 用VS制作简单dll的过程 C和c++版本
- 从今天开始写学习java的笔记
- Maven-jar的生成和依赖(解决跨服务映射文件的问题)
- 2018计算机考研----政治总结1
- HSF的原理分析
- 百度开发测试面试经验2017
- caffe 中classification.cpp的源码注释
- wireshark抓包简单查看HTTP keep-alive原理
- 八、Hbase简介