【问题标题】:Building SFML and V8构建 SFML 和 V8
【发布时间】:2014-05-28 16:18:25
【问题描述】:

我正在尝试使用 SFML 作为 C++ 游戏引擎的图形主干。我也在使用 V8 JavaScript 引擎。问题是,要编译 V8,我必须使用 -stdlib=libstdc++,要编译 SFML,我必须使用 -stdlib=libc++。显然,我不能同时使用两者,那么我该如何解决这个问题?

顺便说一句,我在 Mac Mini 上使用 Xcode,但它也不能通过终端运行。

SFML 在使用-stdlib=libstdc++ 时给我这些错误:

Undefined symbols for architecture x86_64:
  "sf::String::String(char const*, std::locale const&)", referenced from:

而 V8 在使用 -stdlib=libc++ 时给了我这些错误:

Undefined symbols for architecture x86_64:
  "std::_Rb_tree_decrement(std::_Rb_tree_node_base*)", referenced from:
      std::_Rb_tree<unsigned char*, std::pair<unsigned char* const, v8::internal::AddressToTraceMap::RangeStack>, std::_Select1st<std::pair<unsigned char* const, v8::internal::AddressToTraceMap::RangeStack> >, std::less<unsigned char*>, std::allocator<std::pair<unsigned char* const, v8::internal::AddressToTraceMap::RangeStack> > >::_M_insert_unique(std::pair<unsigned char* const, v8::internal::AddressToTraceMap::RangeStack> const&) in libv8_base.x64.a(allocation-tracker.o)
  "std::_Rb_tree_increment(std::_Rb_tree_node_base*)", referenced from:
      v8::internal::AddressToTraceMap::RemoveRange(unsigned char*, unsigned char*) in libv8_base.x64.a(allocation-tracker.o)
      v8::internal::AddressToTraceMap::Print() in libv8_base.x64.a(allocation-tracker.o)
  "std::__throw_length_error(char const*)", referenced from:
      std::vector<v8::internal::WorkerThread*, std::allocator<v8::internal::WorkerThread*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<v8::internal::WorkerThread**, std::vector<v8::internal::WorkerThread*, std::allocator<v8::internal::WorkerThread*> > >, v8::internal::WorkerThread* const&) in libv8_base.x64.a(default-platform.o)
  "std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from:
      v8::internal::AddressToTraceMap::RemoveRange(unsigned char*, unsigned char*) in libv8_base.x64.a(allocation-tracker.o)
  "std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from:
      std::_Rb_tree<unsigned char*, std::pair<unsigned char* const, v8::internal::AddressToTraceMap::RangeStack>, std::_Select1st<std::pair<unsigned char* const, v8::internal::AddressToTraceMap::RangeStack> >, std::less<unsigned char*>, std::allocator<std::pair<unsigned char* const, v8::internal::AddressToTraceMap::RangeStack> > >::_M_insert_unique(std::pair<unsigned char* const, v8::internal::AddressToTraceMap::RangeStack> const&) in libv8_base.x64.a(allocation-tracker.o)

【问题讨论】:

    标签: sfml v8 libstdc++ libc++ build-error


    【解决方案1】:

    您需要使用相同的标准库重新编译 SFML 和/或 V8,因为它们不兼容。我不知道 V8,但 SFML 也应该能够与 libstdc++ 一起工作(在生成 makefile 时将 CMAKE_CXX_FLAGSCMAKE_C_FLAGS 设置为 -stdlib=libstdc++)。但是,您将无法在 libstdc++ 中使用 C++11 功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 2016-07-23
      • 2011-08-22
      相关资源
      最近更新 更多