CからC++の関数を実行しようとしたところ、うまくコンパイルできませんでした。
どうすればよいでしょうか。
src/hello_cpp.h
lang
1#ifdef __cplusplus 2extern "C" { 3#endif 4 5void hello_cpp(void); 6 7#ifdef __cplusplus 8} 9#endif
src/hello_cpp.cpp
lang
1#include <iostream> 2#include "hello_cpp.h" 3 4void hello_cpp() { 5 std::cout << "Hello C++" << std::endl; 6}
src/main.c
lang
1#include "hello_cpp.h" 2 3int main(int argc, char** argv) { 4 hello_cpp(); 5}
コンパイルコマンド
g++ -c src/hello_cpp.cpp -o tmp/hello_cpp.o gcc tmp/hello_cpp.o src/main.c -o tmp/hello
発生したエラー
sh
1Undefined symbols for architecture x86_64: 2 "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from: 3 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in hello_cpp.o 4 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello_cpp.o 5 "std::__1::ios_base::getloc() const", referenced from: 6 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in hello_cpp.o 7 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello_cpp.o 8 "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(unsigned long, char)", referenced from: 9 std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in hello_cpp.o 10 "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from: 11 std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in hello_cpp.o 12 "std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)", referenced from: 13 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in hello_cpp.o 14 "std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()", referenced from: 15 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in hello_cpp.o 16 "std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)", referenced from: 17 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello_cpp.o 18 "std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()", referenced from: 19 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello_cpp.o 20 "std::__1::cout", referenced from: 21 _hello_cpp in hello_cpp.o 22 "std::__1::ctype<char>::id", referenced from: 23 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in hello_cpp.o 24 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello_cpp.o 25 "std::__1::locale::~locale()", referenced from: 26 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in hello_cpp.o 27 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello_cpp.o 28 "std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from: 29 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello_cpp.o 30 "std::__1::ios_base::clear(unsigned int)", referenced from: 31 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello_cpp.o 32 "std::terminate()", referenced from: 33 ___clang_call_terminate in hello_cpp.o 34 "___cxa_begin_catch", referenced from: 35 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello_cpp.o 36 ___clang_call_terminate in hello_cpp.o 37 "___cxa_end_catch", referenced from: 38 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello_cpp.o 39 "___gxx_personality_v0", referenced from: 40 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in hello_cpp.o 41 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello_cpp.o 42 std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in hello_cpp.o 43 Dwarf Exception Unwind Info (__eh_frame) in hello_cpp.o 44ld: symbol(s) not found for architecture x86_64 45clang: error: linker command failed with exit code 1 (use -v to see invocation)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/26 06:30
2015/09/26 15:12 編集