问题描述
- 如果加载了aa.lib文件,为什么还需要加载aa.dll
- 在一个vs2010开发的工程的“附加依赖项”中加载了一个静态链接库,aa.lib 可是运行时提示找到不到aa.dll 然后又在c盘的system32中拷入了aa.dll运行正常了。
我不明白的地方是:程序不是已经加载了aa.lib 了吗 为什么还需要aa.dll? 生成的aa.lib和aa.dll是有区别的吗?
解决方案
lib文件通过编译才可以使用,编译分静态与动态之分。
静态编译
静态lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序
动态编译
动态lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时候需要相应的dll文件支持
时间: 2024-10-02 15:13:13