我用(带有g++编译器)在我的Mac (Intel)上编写了一个程序,我连接的任何库(标准库除外,我通过brew安装了其他库)都会出现相同的错误。
下面是我的程序给出这个错误的一个例子。关于function.hpp和func,不要注意。它不会产生错误。我写这个是为了好玩,展示代码是一件很遗憾的事,因为有一个丑陋的OOP。
请帮我修一下,因为没有图书馆,我将无法在学习上取得进一步的进步。我是一个初学者,所以我可能不太了解,因此,如果我得到尽可能少的复杂的事情。
关于相似之处的评论:“您不能正常编写OOP,但您希望使用库,深入学习”或“如果您不满意这些错误会导致错误”或一些一般性建议:“这里一切都很简单:学习x86_64的体系结构,重写您的操作系统,然后编写编译器等等”--请不要编写,我正在寻求具体的帮助和实用的建议。
#include <iostream>
#include <SFML/Graphics.hpp>
#include "function.hpp"
using namespace std;
int main(int argc, char const *argv[])
{
double k[] = {1.0,2.0,3.0};
func F = func(k, (long)3);
F.ShowF_x();
while (!sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
{
cout << "Press esc and find out if it works" << endl;
}
return 0;
}
Undefined symbols for architecture x86_64:
"sf::Keyboard::isKeyPressed(sf::Keyboard::Key)", referenced from:
_main in main-61ac6e.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
发布于 2022-02-01 13:18:44
我想你使用的是SFML的错误版本。确保您使用的是这版本的MacOS。在下载页面上,确保您使用的是MacOS/clang版本。
其次。检查Visual设置是否设置为SFML用于MacOS的正确版本。意思是C++11!我认为,默认情况下,C++14在Visual中使用。
您也可以尝试使用您的终端编译它。我能够用以下命令编译它:
g++ test.cpp -I/Users/name/Downloads/cpptest -L/Users/name/Downloads/cpptest/lib -l sfml-graphics -l sfml-window
文件夹内容:
cpptest
├── SFML -> Folder with SFML headers
├── lib -> SFML lib folder
└── test.cpp -> your code
编辑:我从您在这个问题中的一个注释中看到,在您的属性文件中,cppstandard
设置为C++17。请确保您的Visual设置设置为使用C++11。
https://stackoverflow.com/questions/70894489
复制相似问题