在一个vs2010开发的工程的“附加依赖项”中加载了一个静态链接库,aa.lib, 可是运行时提示找到不到aa.dll, 然后又在c盘的system32中拷入了aa.dll,运行正常了。
我不明白的地方是:程序不是已经加载了aa.lib 了吗, 为什么还需要aa.dll? 生成的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文件支持