SFML在mac上给了我未知的符号
SFML is giving me unknown symbols on mac
我使用指令编译SFML2,通过在cmake中添加标志,使其在mac上与c++ 11一起工作。
每当我尝试使用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上一切都很好。我有一个项目,我正在移植,我试图做一个突破克隆来测试。我手头的项目相当大,我想尽量减少工作量。
我想到了一个解决办法。如果我使用来自SFML网站的预编译库,它可以很好地编译。我现在的问题是,为什么?它们的行为是相同的,并且我假定它们是使用相同的方法编译的。
要使用c++ 11支持编译SFML,您需要两个工具(如入门教程中所述):clang with libc++
libc++和libstdc++有两种不同的S(T)L实现。这就是问题所在。
不幸的是,没有神奇的解决方案;你必须要么使用没有c++ 11的SFML,要么在c++ 4.7和c++ 11支持下编译SFML。当然,您也可以使用其他IDE。
请注意,SFML不支持非官方编译器。但是,欢迎您尝试一下,并在官方论坛上分享您的经验。
相关文章:
- 继承期间显示未知行为的子类
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- vscode g++链路故障:体系结构x86_64的未定义符号
- 输入中的字符串数未知(以字母表示)
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 具有未知值时的时间复杂性
- 使用gcc从静态链接的文件中查找可选符号
- C++中无符号字符溢出
- 使用无符号字符数组有效存储内存
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- VC++本机单元测试,找不到调试符号
- 未知的错误导致程序返回怪异的符号
- 将未知大小的整数转换为其无符号形式的最短/最干净方法
- 编译 opencv 框架时出现未知错误:未定义的符号:"_CGImageDestinationCreateWithURL"
- SFML在mac上给了我未知的符号