【问题标题】:SFML is giving me unknown symbols on macSFML 在 mac 上给了我未知的符号
【发布时间】:2013-03-10 02:53:08
【问题描述】:

我使用指令编译 SFML2,使其在 mac 上与 C++11 一起工作,方法是在 cmake 中添加标志。

每当我尝试使用 Eclipse 作为我的 IDE 的库时,我都会得到未知符号,它使用的命令如下:

g++-4.7 -L/usr/local/lib -std=c++11 -o "Breakout"  ./main.o   -lsfml-window -lsfml-system -lsfml-graphics

它吐出的错误是:

Undefined symbols for architecture x86_64:
"sf::RenderWindow::RenderWindow(sf::VideoMode, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, sf::ContextSettings const&)", referenced from:
  _main in main.o

使用此代码:

#include <SFML/Graphics.hpp>

int main () {
    sf::RenderWindow window(sf::VideoMode(800,600), "window");
    return 1;
}

我认为问题可能是 SFML 是用 Clang 编译的,而我使用的是 GCC 4.7。我无法使用 GCC 编译 SFML,因为它抱怨 Objective C 和 Cocoa 的东西。如果可以避免,我不想为这个项目改用 Clang,因为我喜欢 Eclipse 作为 IDE,但对 Clang 的支持很糟糕。

编辑:我差点忘了,Linux 上一切正常。我有一个正在移植的项目,我正在尝试制作一个突破性克隆来测试。我已经有的项目很大,我想尽可能地避免工作。

【问题讨论】:

    标签: c++ gcc symbols sfml


    【解决方案1】:

    我想出了一个解决方案。如果我使用 SFML 网站上的预编译库,它编译得很好。我现在的问题是,为什么?它们的行为相同,我认为它们是使用相同的方法编译的。

    【讨论】:

      【解决方案2】:

      要使用 C++11 支持编译 SFML,您需要两个工具(如入门教程中所述):clang with libc++。

      Libc++ 和 libstdc++ 有两种不同的 S(T)L 实现。这就是这里的问题。

      不幸的是,没有神奇的解决方案;你要么使用不带 C++11 的 SFML,要么使用 g++ 4.7 和 C++11 支持编译 SFML。当然,您也可以使用其他 IDE。

      请注意,SFML 不会正式支持非官方编译器。不过,欢迎您尝试一下,并在官方论坛上分享您的经验。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-29
        • 2011-10-18
        • 2021-12-04
        • 2020-11-25
        • 2017-10-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多