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文件相关推荐

  1. .dll与.lib文件的区别

    文章转载于https://www.cnblogs.com/zkwarrior/p/10948174.html 共有两种库: 一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由 ...

  2. 编译Gmsh,生成dll和lib文件,在自建程序中使用Gmsh函数

    本文参考了CAD大神潇湘散人的Gmsh编译博客:使用VS2015编译gmsh4.8 with opencascade7.4,并用gmsh.lib创建简单工程测试网格_XXM的博客-CSDN博客在编译过 ...

  3. c++中.dll与.lib文件的生成与使用的详解

    c++中.dll与.lib文件的生成与使用的详解 --------------------------------------------------------------------------- ...

  4. 怎么创建dllwenjian_如何创建DLL文件

    动态链接库(DLL)是从C语言函数库和Pascal库单元的概念发展而来的.所有的C语言标准库函数都存放在某一函数库中.在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添 ...

  5. C++:通过多态实现接口并生成dll和lib文件的小例子

    1.接口声明头文件 首先声明一个形状基类,然后是三个派生类三角形.长方形和圆形. 基类中只有一个函数,getArea()输出面积 三个派生类分别对getArea()重载,分别有各自的构造函数 派生类的 ...

  6. 从DLL生成LIB文件

    设置VS2015运行环境 在开始菜单打开Visual Studio 2015\Visual Studio Tools\Windows Desktop Command Prompts\VS2015 x8 ...

  7. Qt 编译动态库只生成dll没有lib文件

    背景描述: 库A开发最初是以静态库形式存在,随着时间推移项目功能逐渐增多,涉及库A的内容也增多.组内成员开发各有习惯,QtCreator和VS2015未作限制. 现象: VS2015编辑器下正常编译和 ...

  8. 由dll导出lib文件

    老生长谈的问题了,网上的教程也很多,这里以实际例子作个备份,并说明下注意点. 只有dll文件(my.test.dll)和头文件,没有lib文件,需要导出lib,静态编译进代码中,用VS自带的dumpb ...

  9. How to call DLL and LIB files (SDK)

    应用程序如何找到DLL文件? 使用LoadLibrary显式链接,那么在函数的参数中可以指定DLL文件的完整路径:如果不指定路径,或者进行隐式链接,Windows将遵循下面的搜索顺序来定位DLL: ( ...

最新文章

  1. 后缀自动机 ---- P3804 【模板】后缀自动机(求每个等价类最长串的出现次数)
  2. SAP SD 信贷管理的操作流程
  3. windows 10开机后弹出的certificate选择弹出窗
  4. python的pillow给图片加文字_Python-Pillow库给图片添加文字、水印
  5. Git笔记(34) 调试
  6. oracle flex asm ceph,关于12c flex cluster及 flex asm疑问
  7. week5 0.1 安装materializecss
  8. 计算机表格斜杠怎么打,『excle表格怎么做斜杠线』excel怎么打斜杠
  9. 排查DHCP服务器故障
  10. Python实战案例:金庸的功夫流派、人物关系的分析案例(下)
  11. 小度杀入《最强大脑》总决赛,除了阴谋论还有什么值得关注的?
  12. C# gdal创建和读取tiff文件
  13. “汇新杯”新兴科技成果专项赛介绍
  14. 棋牌游戏算法——麻将系列总结
  15. 诛仙斩龙墨雪服务器怎么找不到了,《诛仙3》5月13日服务器数据互通公告
  16. python 计时器模块_python中计时器
  17. 详细解读Latent Diffusion Models:原理和代码
  18. saltstack内置执行模块列表
  19. 蓝牙BQB认证所需资料和流程
  20. 一文彻底理解评分卡开发中——Y的确定(Vintage分析、滚动率分析等)

热门文章

  1. Android之 FLAG_ACTIVITY_CLEAR_TASK
  2. 《零基础看得懂的C++入门教程 》——(5) 容我套个娃 循环
  3. mysql signed 长度_浅谈mysql字段长度设置
  4. loadrunner发送json_Loadrunner模拟JSON接口请求进行测试
  5. 用单片机测量流体流速的_流量测量的主要方法
  6. 计算机辅助翻译的启示,翻译单位研究对计算机辅助翻译启示.PDF
  7. COMA(二):Counterfactual Multi-Agent Policy Gradients 论文讲解
  8. mysql mvcc 隔离级别_隔离级别和MVCC
  9. 一张纸能有多大力量?
  10. 奇妙的曲线--希尔伯特曲线