VS2010编译调试动态库
参考博客:https://www.cnblogs.com/skynet/p/3372855.html
在进行大型工程项目开发的时候,为方便各个部门的工作交接就需要编译调用相对应的动态库,通过相对应的动态库接口实现相应操作。我在实习时候面临的第一项任务就是编译一个动态库,今天交工也顺便总结一下自己遇到的问题。
1.1首先就是静态库和动态库两种库的区别:
一段你自己编写的代码比如最简单的hello world 编译打包成一个可执行的exe程序需要经历以下几个阶段:
源文件-> 预编译->编译->汇编->链接->可执行文件
静态库和动态库在链接的阶段才开始工作,
静态库在链接时是直接编译到可执行文件中,链接方式也叫静态链接。优点是程序放哪都可以运行,不需要再考虑依赖库,缺点是占用空间大,特别是在多个程序共用一个库时造成资源浪费。
动态库则完美解决了静态库的问题,动态库只在程序运行时载入,有多个程序运行依赖同一个动态库时内存只需要一份实例就可以,解决了空间浪费问题。
在windows环境下使用vs2010编译静态库是有两种方法的我另一种没有使用过,就说一下我目前经常用的调用方法,步骤主要是三步
1 在项目属性——>配置属性—>C/C++ ——>常规的附加包含目录中填入你要引用库的头文件所在目录。
2.在属性——>配置属性——>链接器——>常规的附加依赖库目录输入库所在目录
3.在属性——>配置属性——>链接器——>输入的附加依赖项填入所要调用的库名(比如math.lib)
最后在解决方案资源管理器——>资源文件选项上右击添加现有资源,将要调用的lib和dll文件添加到工程当中就可以了。
以上是隐式调用,显示调用我没有使用过,大家可以参考其他博主的博客实现下。
调试动态库
内容参考:(https://docs.microsoft.com/zh-cn/visualstudio/debugger/debugging-dll-projects?view=vs-2019)
在编译结束后就需要测试动态库的各个接口,但库文件无法进行调试只能由其他程序进行调用,我在网上也找了好长时间资料,最后终于找到了办法:
首先创建一个已经调用了动态库的可执行文件,然后打开创建dll的工程,打开工程属性——>配置属性——>调试,找到命令一栏中点击对应的编辑栏——>点击浏览找到你刚调用动态库生成的可执行exe程序,或者点击编辑 填入程序的目录和对应的名称最后点击应用——>确定,
开始调试前记得要先设置断点,最后点击调试就可以调试dll了,注意程序调用的动态库版本和目前即将调试的动态库版本要一致,不然会出现到断点处无法中断的结果。具体相关内容可以查看微软官方文档。另外我这种方法在每次修改了dll内容后都需要重新打开调用dll的可执行程序工程重新创建项目解决方案,对程序进行更新,有点繁琐。目前还没找到更好的方式。

浙公网安备 33010602011771号