簡體   English   中英

使用 boost::chrono::system_clock 獲取時間導致 linker 錯誤

[英]Using boost::chrono::system_clock to get time causes linker error

我有一個鏈接到系統、計時和線程的程序。 但只需添加auto now = boost::chrono::system_clock::now()就會給我一個 linker 錯誤。

以下是我的main.cpp

#include <iostream>
#include <boost/chrono.hpp>
#include <boost/circular_buffer.hpp>

int main(int argc, char* argv[]) {
   boost::circular_buffer<int> test_ring;
   test_ring.resize(10);
   std::cout << "Boost ring size is" << test_ring.size() << std::endl;
   
   // Below line of code causes linker error while I am well able to use boost componenets as you can see above
   auto now = boost::chrono::system_clock::now();
   return 0;
}

以下是我的CMakelists.txt

cmake_minimum_required(VERSION 3.4)
project(TestProgram)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")

find_package(Boost REQUIRED COMPONENTS system chrono thread)
include_directories(${Boost_INCLUDE_DIRS})

add_executable(TestProgram TestProgram.cpp)

我收到以下linker 錯誤

Undefined symbols for architecture x86_64:
  "boost::chrono::system_clock::now()", referenced from:
      _main in TestProgram.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [TestProgram] Error 1
make[1]: *** [CMakeFiles/TestProgram.dir/all] Error 2
make: *** [all] Error 2

問題:
我究竟做錯了什么? 我是否缺少要鏈接的任何增強組件? 如您所見,我可以在我的機器上鏈接到其他 Boost 組件,例如boost/circular_buffer ,只是boost::chrono::system_clock不起作用。

環境:
我在使用以下 clang 編譯器的 macOS Catalina 10.15.7 上。

Apple clang version 12.0.0 (clang-1200.0.32.21)
Target: x86_64-apple-darwin19.6.0
Thread model: posix

add_executable之后,添加target_link_libraries

add_executable(TestProgram TestProgram.cpp)
target_link_libraries(TestProgram ${Boost_LIBRARIES})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM