0
boostからファイルシステムを使用しようとしているときに、リンクの問題があります。おそらく、それが動作するはずboostライブラリとclionを使ってエラーにリンクする
#include <iostream>
#include <boost/filesystem.hpp>
using namespace boost::filesystem;
int main(int argc, char* argv[])
{
if (argc < 2)
{
std::cout << "Usage: tut1 path\n";
return 1;
}
std::cout << argv[1] << " " << file_size(argv[1]) << '\n';
return 0;
}
が、私はこのようなエラーがあります:私は、チュートリアルからコードをコピーし
Scanning dependencies of target untitled
[ 50%] Building CXX object CMakeFiles/untitled.dir/main.cpp.o
[100%] Linking CXX executable untitled
Undefined symbols for architecture x86_64:
"boost::filesystem::detail::file_size(boost::filesystem::path const&, boost::system::error_code*)", referenced from:
boost::filesystem::file_size(boost::filesystem::path const&) in main.cpp.o
"boost::system::system_category()", referenced from:
___cxx_global_var_init.2 in main.cpp.o
"boost::system::generic_category()", referenced from:
___cxx_global_var_init in main.cpp.o
___cxx_global_var_init.1 in main.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[3]: *** [untitled] Error 1
make[2]: *** [CMakeFiles/untitled.dir/all] Error 2
make[1]: *** [CMakeFiles/untitled.dir/rule] Error 2
make: *** [untitled] Error 2
マイCMakeLists.txtファイル:
cmake_minimum_required(VERSION 3.7)
project(untitled)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
add_executable(untitled ${SOURCE_FILES})
find_package(Boost)
IF (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIR})
endif()
を私は何を向上させることができますこのコードをコンパイルしますか?私はOSX上でCLionエディタを使用します。
私たちにあなたのmake comand/makefile/CMakeLists.txtを見せてください! – Rama
'cmake_minimum_required(バージョン3.7) プロジェクト(タイトルなし) セット(CMAKE_CXX_STANDARD 11) セット(SOURCE_FILESのmain.cppに) add_executable(タイトルなし$ {SOURCE_FILES}) find_package(ブースト) (Boost_FOUND)IF include_directories ($ {Boost_INCLUDE_DIR}) endif() ' この貼り付けのフォーマットは申し訳ありません。複数行にする方法はわかりません。 – emil
@emilあなたはコメントにコメントを残すのではなく、あなたの質問にそれを追加したいと思うでしょう。 – chbchb55