VS2013下的静态链接库和动态链接库的创建和使用

建立控制台程序,静态链接库还是动态链接库,项目配置属性里改成对应的即可。

静态库编译之后会生成对应的.lib文件,在工程A中使用时,配置A的属性,

1、配置属性 == 》C/C++  ==》常规  附加的include 路径里,添加头文件所在的路径。

2、配置属性 == 》链接器 ==》常规  附加库目录里,添加.lib文件所在的路径。

3、配置属性 == 》链接器 ==》输入 附加依赖项目里,添加 .lib 文件的名称。

这里的路径可以使用相对路径也可以使用绝对路径,推荐使用相对路径。使用相对路径时,当前的目录 . 表示 .vcxproj 工程文件所在的路径(而不是解决方案的路径)。


在解决方案中看到的文件的组织结构只是一种逻辑上的结构,可以随时任意的修改,不影响编译。实际在磁盘上的物理存储结构才是最重要的。通过添加项添加进工程的文件,都会自动识别该文件相对于工程的位置并插入到 .vcxproj 工程配置文件里。

  <ItemGroup>
    <ClCompile Include="func\returnZero.cpp" />
    <ClCompile Include="source.cpp" />
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="func\sayHello.h" />
  </ItemGroup>
只是在 include 头文件时,正确的写入头文件相对工程的相对路径即可。

动态链接库的创建的不同之处在于,需要在所有函数的声明前边加上 __declspec(dllexport) ,动态链接库的创建也会产生.lib文件,这个文件比较小,只有几K ,叫导入库,只是一些符号信息,提供给编译器索引。总之,.lib都是编译时用到。

VC++ 对于动态链接库和静态链接库的处理是有差异的,见 Visual Studio 和 GCC 引用 dll 文件的区别


加入动态链接库,编译通过之后,要想运行,需要将动态链接库.dll 文件拷贝到A工程目录下边。

另外,debug 产生的动态链接库和静态链接库;只能给A工程在debug 状态下使用。也就是说,A工程在release状态下用的 静态链接库和动态链接库,需要提供对应的release版。


另外,使用动态链接库的程序允许 dll 中包含与该程序中相同名称的全局变量;而静态链接的则不允许。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值