50 C++中使用动态库
动态链接和静态链接的区别:动态链接是在链接时发生的;静态链接是在编译时发生的
当编译一个静态库的时候,将其链接到可执行文件,也就是应用程序,或者链接到一个动态库
静态链接允许更多的优化发生,因为编译器和链接器,可以从静态链接中看到更多的东西
而动态链接只有在真正启动你的可执行文件时,你的动态链接库才会被加载。所以动态库实际上不是可执行文件的一部分,当启动一个可执行文件时,可执行文件会被加载到内存中,与此同时会动态的链接外部的二进制文件(动态库)。即是将一个额外的文件加载到内存中。所以在实际运行程序前,就需要具备了这些(库,外部文件)(这也就是有时候为什么会有缺少dll
出错报告,因为它是动态链接)
🍅简单方法
这里以加glfw库为例子
先加头文件:项目属性 -> 在C/C++下的general -> additional include directories(附加的包含(include)目录),然后在后面加上include目录的文件目录地址
再加库:项目属性 -> linker -> General -> Additional Library Directories(附加的库目录),然后在后面加上库目录的文件目录地址
然后因为这里只用动态链接,所以在 项目属性 -> linker -> Input -> Additional Dependencies 上加入glfw3.lib.dll
就可以了(记得要加分号与其他的分隔!)(linker里加的都是lib
)
最后把glfw3.dll
动态库直接丢到debug
文件下就好了,因为debug
文件下有可执行文件,只要丢到可执行文件旁边就好了
总结:链接到动态库,然后确保在一个可访问的地方有dll
文件就可以了(这是一种自动搜索路径,率先会搜索可执行文件的目录)