我们知道当我们编译并生层一个exe程序时,要运行此exe程序,需要将编译过程中依赖的链接库dll文件都放到附近才可以。
如果我们将这些库目录加入环境变量后,那么运行exe时系统会自动到环境变量查找,查找到就可以在执行时,随时加载(这就是环境变量的作用)。
项目中配置opencv最好是用宏来配置,这样即便opencv安装路径变了,依然有效。
动态库编译时的lib又称为导入库lib,这个导入库和静态lib是不一样的;
- 用静态库lib编译生成exe时,需要包含头文件告诉编译器我的库大概的样子,还需要静态库lib,会将所有的lib打包进exe,这样exe会很大,而且后期更新要重新编译生成exe。
- 用动态库编译生成exe时,也需要包含头文件告诉编译器我的库大概的样子,还需要导入库lib在链接时告诉编译器我的函数的位置,最终编译成exe后,dll不在其中,导入库lib被导入了exe,因此在exe运行时不再需要导入库了。
线程和cpu的关系:
多线程就是将一个cpu核心模拟出多个核心的效果,线程数大于等于cpu核心数。
多线程对于并发的处理有实际意义,比如并发请求为200时,一个4核的cpu可以通过intel的超线程技术将每个cpu核做成50个线程,模拟50个cpu核心的效果,来应对并发。(多线程仅支持intel的cpu。)