visual studio 中导入 benchmark

法一

1.visual studio 中导入 benchmark.lib Shlwapi.lib这两个库

2.预处理宏 BENCHMARK_STATIC_DEFINE

vs导入参考

错误提示

  1. 没有加入 BENCHMARK STATIC_DEFINE
    error LNK2001: 无法解析的外部符号 "__declspec(dllimport) int __cdecl benchmark::internal::InitializeStreams(void)" (imp ?InitializeStreams@internal@benchmark@@YAHXZ)
    1>test.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: virtual void __thiscall benchmark::internal::FunctionBenchmark::Run(class benchmark::State &)" (
    imp ?Run@FunctionBenchmark@internal@benchmark@@UAEXAAVState@3@@Z)
    1>test.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) class benchmark::internal::Benchmark * __cdecl benchmark::internal::RegisterBenchmarkInternal(class benchmark::internal::Benchmark *)" (_imp?RegisterBenchmarkInternal@internal@benchmark@@YAPAVBenchmark@12@PAV312@@Z)

2.没有加入Shlwapi.lib

benchmark.lib(sysinfo.obj) : error LNK2001: 无法解析的外部符号 __imp_SHGetValueA


上面的这些脏活可以让 cmake 干(find_package(benchmark REQUIRED) 他会执行benchmarkTargets.cmake,也就是法二这么干的)。

cmake 隐藏了很多细节

法二

CMake 复制代码
cmake_minimum_required(VERSION 3.10)  
  
project(benchmark_array)  
  
set(CMAKE_CXX_STANDARD 17)  
set(CMAKE_CXX_STANDARD_REQUIRED ON)  
#这里的路径要填你本地编译出来的路径
set(BENCHMARK_INSTALL_DIR "C:/Users/Ori/Desktop/codeTool/benchmark-main/build")  
  
find_package(benchmark REQUIRED PATHS ${BENCHMARK_INSTALL_DIR})  
#这里要填工程和所要测试的文件名
add_executable(benchmark_array cppThread.cpp)  
  
target_link_libraries(benchmark_array benchmark::benchmark)  

在cmakelists文件同级目录新建一个build目录用于编译测试工程,开vs控制台进入build目录下,依次执行命令

cmake ... -G "Visual Studio 16 2019" -A x64

msbuild [project name].sln /property:Configuration=Release /property:Platform=x64

编译成功后控制台进入Release目录或者说是编译产物benchmark_array.exe所在目录,执行文件,就可以看到结果如下

cmake导入参考

心得

检查库 和 当前项目的编译工具链

  1. release 还是 debug
  2. x86 还是 x64
  3. cl 编译器
  4. link 连接器

  1. Windows静态库:lib
  2. Windows动态库:lib、dll
  3. 库之间的依赖关系

  1. 预处理宏 BENCHMARK_STATIC_DEFINE
相关推荐
爱吃涮毛肚的肥肥(暂时吃不了版)19 分钟前
仿腾讯会议——创建房间&加入房间
c++·qt·面试·职场和发展·腾讯会议
代码AC不AC3 小时前
【C++】类和对象【下】
开发语言·c++·类和对象·学习分享·技术交流
星夜9824 小时前
C++回顾 Day5
开发语言·c++·算法
@Zeker4 小时前
C++多态详解
开发语言·c++
小羊不会c++吗(黑客小羊)4 小时前
【c++】 我的世界
c++
王燕龙(大卫)4 小时前
递归下降算法
开发语言·c++·算法
郭涤生5 小时前
C++ 完美转发
c++·算法
whoarethenext5 小时前
数据结构堆的c/c++的实现
c语言·数据结构·c++·
2401_858286115 小时前
CD36.【C++ Dev】STL库的string的使用 (下)
开发语言·c++·类和对象·string
強云6 小时前
性能优化-初识(C++)
c++·性能优化