怎么创建dllwenjian_如何创建和使用dll及lib文件
Abstract
如何在VC9环境下创建和使用dll及lib文件,但不用MFC。
一、创建dll
参见文章[zz]lib和dll文件的区别和联系。用方法一,在VC9下测试通过。
创建一个Dynamic Library工程,方法是New Project -> Win32
Console Application -> 在Win32 Application
Wizard中选择DLL和Empty project ->
Finish。假设工程名为testdll。
将文章[zz]lib和dll文件的区别和联系中的h文件和cpp文件copy到工程中。假设两个文件分别是testdll.h和testdll.cpp。不过最好把
#define MYLIBAPI extern "C" _declspec (dllexport)
放在头文件中,因为头文件将会被重用。把这一句放在头文件中可以减小代码量。否则必须在调用程序(主程序)中也写上这一句。
二、使用dll
创建一个空的Win32 Console
Application。命名为calldll。将前面建立的testdll中的testdll.h添加到工程中。这里也可以在工程properties
-> C/C++ -> General ->
Additional Include Directories中添加testdll的目录,则下面简单地写成#include
"testdll.h"就可以了。新建calldll.cpp如下:
#include
#include "testdll工程目录\testdll\testdll.h"
int main()
{
int x=1,y=2;
printf("%d + %d = %d\n",x,y,Add(x,y));
getchar();
}
将前面生成的testdll.lib(注意是lib不是dll)添加到工程中。方法是 Project
-> calldll Properties -> Linker
-> Input -> Additional
Dependenies,添加$(TargetDir)\testdll.lib。同时将前面生成的testdll.lib和testdll.dll拷贝到calldll工程的Debug目录下。这样就可以编译成功了。
三、创建lib
创建Winew Static Library工程。头文件与cpp文件与创建dll类似,不过去掉_declspec
(dllimport),只保留extern "C"。个人怀疑去掉这个extern "C"也是可以的,就留给后人去试吧。
四、使用lib
创建一个空的Win32 Console
Application。命名为calllib。将前面建立的testdll中的testdll.h添加到工程中。这一步与使用dll相同。也可以直接将.h文件copy到calllib目录下。新建calllib.cpp如下:
#include
#include "dll.h"
//LIB testlib.lib
#pragma
comment(lib,"C:\\Users\\Arthur\\Documents\\practise_cpp\\libAndDll\\calllib\\Debug\\testlib.lib")
int main()
{
int x=1,y=2;
printf("%d + %d = %d\n",x,y,Add(x,y));
getchar();
}
将前面生成的testdll.lib拷贝到calllib工程的Debug目录下。不需要像引用dll一样添加Additional
Dependencies。
这样就可以编译成功了。当然,如果不想写#pragma这样一句话,也可以像引用dll一样添加Additional
Dependencies,在使用OpenCV的时候就是这样做的。
--------------------------------------------------------
怎么创建dllwenjian_如何创建和使用dll及lib文件相关推荐
- .dll与.lib文件的区别
文章转载于https://www.cnblogs.com/zkwarrior/p/10948174.html 共有两种库: 一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由 ...
- 编译Gmsh,生成dll和lib文件,在自建程序中使用Gmsh函数
本文参考了CAD大神潇湘散人的Gmsh编译博客:使用VS2015编译gmsh4.8 with opencascade7.4,并用gmsh.lib创建简单工程测试网格_XXM的博客-CSDN博客在编译过 ...
- c++中.dll与.lib文件的生成与使用的详解
c++中.dll与.lib文件的生成与使用的详解 --------------------------------------------------------------------------- ...
- 怎么创建dllwenjian_如何创建DLL文件
动态链接库(DLL)是从C语言函数库和Pascal库单元的概念发展而来的.所有的C语言标准库函数都存放在某一函数库中.在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添 ...
- C++:通过多态实现接口并生成dll和lib文件的小例子
1.接口声明头文件 首先声明一个形状基类,然后是三个派生类三角形.长方形和圆形. 基类中只有一个函数,getArea()输出面积 三个派生类分别对getArea()重载,分别有各自的构造函数 派生类的 ...
- 从DLL生成LIB文件
设置VS2015运行环境 在开始菜单打开Visual Studio 2015\Visual Studio Tools\Windows Desktop Command Prompts\VS2015 x8 ...
- Qt 编译动态库只生成dll没有lib文件
背景描述: 库A开发最初是以静态库形式存在,随着时间推移项目功能逐渐增多,涉及库A的内容也增多.组内成员开发各有习惯,QtCreator和VS2015未作限制. 现象: VS2015编辑器下正常编译和 ...
- 由dll导出lib文件
老生长谈的问题了,网上的教程也很多,这里以实际例子作个备份,并说明下注意点. 只有dll文件(my.test.dll)和头文件,没有lib文件,需要导出lib,静态编译进代码中,用VS自带的dumpb ...
- How to call DLL and LIB files (SDK)
应用程序如何找到DLL文件? 使用LoadLibrary显式链接,那么在函数的参数中可以指定DLL文件的完整路径:如果不指定路径,或者进行隐式链接,Windows将遵循下面的搜索顺序来定位DLL: ( ...
最新文章
- 后缀自动机 ---- P3804 【模板】后缀自动机(求每个等价类最长串的出现次数)
- SAP SD 信贷管理的操作流程
- windows 10开机后弹出的certificate选择弹出窗
- python的pillow给图片加文字_Python-Pillow库给图片添加文字、水印
- Git笔记(34) 调试
- oracle flex asm ceph,关于12c flex cluster及 flex asm疑问
- week5 0.1 安装materializecss
- 计算机表格斜杠怎么打,『excle表格怎么做斜杠线』excel怎么打斜杠
- 排查DHCP服务器故障
- Python实战案例:金庸的功夫流派、人物关系的分析案例(下)
- 小度杀入《最强大脑》总决赛,除了阴谋论还有什么值得关注的?
- C# gdal创建和读取tiff文件
- “汇新杯”新兴科技成果专项赛介绍
- 棋牌游戏算法——麻将系列总结
- 诛仙斩龙墨雪服务器怎么找不到了,《诛仙3》5月13日服务器数据互通公告
- python 计时器模块_python中计时器
- 详细解读Latent Diffusion Models:原理和代码
- saltstack内置执行模块列表
- 蓝牙BQB认证所需资料和流程
- 一文彻底理解评分卡开发中——Y的确定(Vintage分析、滚动率分析等)
热门文章
- Android之 FLAG_ACTIVITY_CLEAR_TASK
- 《零基础看得懂的C++入门教程 》——(5) 容我套个娃 循环
- mysql signed 长度_浅谈mysql字段长度设置
- loadrunner发送json_Loadrunner模拟JSON接口请求进行测试
- 用单片机测量流体流速的_流量测量的主要方法
- 计算机辅助翻译的启示,翻译单位研究对计算机辅助翻译启示.PDF
- COMA(二):Counterfactual Multi-Agent Policy Gradients 论文讲解
- mysql mvcc 隔离级别_隔离级别和MVCC
- 一张纸能有多大力量?
- 奇妙的曲线--希尔伯特曲线