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
相关推荐
珹洺5 分钟前
C++从入门到实战(五)类和对象(第一部分)为什么有类,及怎么使用类,类域概念详解(附带图谱等更好对比理解)
java·c语言·开发语言·数据结构·c++·redis·缓存
曦月逸霜1 小时前
第十四次CCF-CSP认证(含C++源码)
数据结构·c++·学习·算法
kiwixing1 小时前
Oracle ASM 磁盘组冗余策略
java·linux·运维·数据库·c++·python·oracle
(❁´◡`❁)Jimmy(❁´◡`❁)1 小时前
1204. 【高精度练习】密码
c++·算法
炒鸡码力2 小时前
一道原创OI题(普及-)——ZCS的随机游走
c++·算法·题解·模拟·题目
修修修也2 小时前
【C++11】左值引用、右值引用、移动语义和完美转发
开发语言·c++·学习·c++11
爱编程的小赵3 小时前
第十五届蓝桥杯C/C++组:宝石组合题目(从小学奥数到编程题详解)
c语言·c++·蓝桥杯
mljy.3 小时前
C++《红黑树》
c++
fpcc4 小时前
跟我学C++中级篇——std::not_fn
c++
啊吧怪不啊吧4 小时前
C++相关基础概念之入门讲解(下)
开发语言·数据结构·c++