c++

c++记录

c++和vs日常

Posted by geek_li on January 7, 2020

使用VS

对于VS,这编辑器是针对项目而不是编辑器本身,所以想完全的copy,然后跑一份相同的项目,你需要重新对编辑器的配置做一次调整,VS不像idea编写Java那样,配置都写在项目上,打开idea,不需要对idea做任何的修改都可以跑Java,当然保证jdk版本需要一致的前提下 vs还有针对项目的版本,如debug、release对应的32、64位系统

vs2017报错解决

error LNK2038: 检测到“RuntimeLibrary”的不匹配项的解决办法: 工程的运行库不匹配导致的 解决办法:右键属性-》c/c++-》代码生成-》运行库

选用运行库保持一致就可以

vs2017外部库引用

引用第三方的库(无论是自己写的还是其他开源都基本一致)

  1. 先确认你本身工程的版本debug、release和32位、64位,运行库是什么么。这些很重要,版本不一致,就算在设置中路径对了,后面跑起来也会报错-》无法解析外部关键字、RuntimeLibrary不匹配等等。

  2. 按照你本地工程版本信息对着需要打包的工程做调整,然后生成解决方案。完成之后会在x64\x86文件夹下看到对应版本文件夹,里面会有生成的静态库,要的就是这个文件。

  3. 修改本地项目VS配置,c\c++-》附加包含目录(对应打包项目的头文件),链接器-》常规-》附加库目录(新建文件夹,里面存放静态库),链接器-》输入(在静态库名字,包括扩张名),c/c++-》代码生成(按照下面的修改) 多线程调试Dll (/MDd) 对应的是MD_DynamicDebug 多线程Dll (/MD) 对应的是MD_DynamicRelease 多线程(/MT) 对应的是MD_StaticRelease 多线程(/MTd)对应的是MD_StaticDebug

  4. 最后测试,在代码里#include+你的静态库名字。函数里使用库中接口

c++

  1. 由于c++对于c#和Java来说,它没有内存管理。所以使用数组存放超过约800的数据量,运行时会报栈溢出;建议使用容器vector,扩展性强

  2. 寻找容器中的最大最小值 std::vector::iterator biggest = std::max_element(std::begin(v), std::end(v));

    auto smallest = std::min_element(std::begin(v), std::end(v));

    输出:*biggest ; 位置:distance(std::begin(v), biggest)