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
相关推荐
峥无2 小时前
C++11 深度详解:现代 C++ 基石全梳理
开发语言·c++·笔记
阿米亚波2 小时前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl
小王C语言3 小时前
【3. 基于 Vibe Coding 的 OJ 平台】. 构建仓库、环境准备、需求梳理、安装依赖
网络·c++
zyl837213 小时前
MCP CodeGraph 完整介绍
visual studio
小王C语言4 小时前
【8.进行接口测试】:通过 curl 进行接口自动化测试 / 通过 python 程序进行接口自动化测试
网络·c++
888CC++4 小时前
C++ 快速学习指南:从入门到进阶的实战路线
开发语言·c++
小小晓.5 小时前
C++记:函数
开发语言·c++·算法
脚踏实地皮皮晨5 小时前
002002002_DepandencyObject类2
开发语言·windows·算法·c#·visual studio
驱动小百科6 小时前
Windows运行库合集下载 VC++、DirectX、.NET运行库安装教程
c++·windows·.net·windows运行库合集下载·windows运行库安装
charlie1145141916 小时前
Cinux —— 给物理内存建账本:bitmap 物理内存管理器
开发语言·c++·操作系统·开源项目