SFML loadFromFile 未定义参考
SFML loadFromFile undefined reference
我正在学习使用 SFML 来制作一个小游戏,到目前为止,我已经创建了一个 window 并弄乱了它的设置,并设置了一个绘制循环和事件处理程序。
一旦我尝试使用以下代码添加我的第一个纹理,问题就开始了:
#include "SpaceNomad.ih"
void MainMenu(GameEngine &Engine)
{
sf::Texture texture;
if(!texture.loadFromFile("MenuBackGround.png"))
{
cout << "couldn't load background texture\n";
}
sf::Sprite *sprite = new sf::Sprite;
sprite->setTexture(texture);
Engine.AddEntity(sprite, 5);
}
上给出的示例代码字面上是不同图像之外的
当我尝试编译它时,出现以下错误:
||=== Build: Debug in space nomad (compiler: GNU GCC Compiler) ===|
obj\Debug\projects\st\take2\MainMenu.o||In function `Z8MainMenuR10GameEngine':|
D:\projects\st\take2\MainMenu.cpp|7|undefined reference to `_imp___ZN2sf7Texture12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4RectIiEE'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
我检查了构建选项中是否包含所有 sfml 库(我正在使用 code::Blocks 和 GCC MinGW)。
https://drive.google.com/file/d/0B4qzXcgqbLZtcHJWUy1vSUhpdVk/view?usp=sharing
我看到的其他主题涉及对人们自己创建的函数的未定义引用,但在这里我使用的是库。
编辑:我刚刚尝试使用同一个库中的基本形状:
sf::CircleShape *shape = new sf::CircleShape(50);
// set the shape color to green
shape->setFillColor(sf::Color(100, 250, 50));
Engine.AddEntity(shape, 5);
编译显示没有问题
您使用的 SFML 库是使用与您 link 您的应用程序所针对的不同运行时或不同运行时 ABI 编译的。
如果您的 SFML 库不是使用与您相同的编译器编译的,那么您需要重建。
如果您在您的应用程序上设置了任何特殊标志(例如不同的 ABI、C++14 等),您将必须使用相同的标志重建 SFML 或将它们从您的项目中删除。
它有时也会发生,因为它不会影响整个运行时库,但会影响 std::string
等部分,这些部分在调用 loadFromFile
函数时会用到。
我正在学习使用 SFML 来制作一个小游戏,到目前为止,我已经创建了一个 window 并弄乱了它的设置,并设置了一个绘制循环和事件处理程序。
一旦我尝试使用以下代码添加我的第一个纹理,问题就开始了:
#include "SpaceNomad.ih"
void MainMenu(GameEngine &Engine)
{
sf::Texture texture;
if(!texture.loadFromFile("MenuBackGround.png"))
{
cout << "couldn't load background texture\n";
}
sf::Sprite *sprite = new sf::Sprite;
sprite->setTexture(texture);
Engine.AddEntity(sprite, 5);
}
上给出的示例代码字面上是不同图像之外的
当我尝试编译它时,出现以下错误:
||=== Build: Debug in space nomad (compiler: GNU GCC Compiler) ===|
obj\Debug\projects\st\take2\MainMenu.o||In function `Z8MainMenuR10GameEngine':|
D:\projects\st\take2\MainMenu.cpp|7|undefined reference to `_imp___ZN2sf7Texture12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4RectIiEE'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
我检查了构建选项中是否包含所有 sfml 库(我正在使用 code::Blocks 和 GCC MinGW)。
https://drive.google.com/file/d/0B4qzXcgqbLZtcHJWUy1vSUhpdVk/view?usp=sharing
我看到的其他主题涉及对人们自己创建的函数的未定义引用,但在这里我使用的是库。
编辑:我刚刚尝试使用同一个库中的基本形状:
sf::CircleShape *shape = new sf::CircleShape(50);
// set the shape color to green
shape->setFillColor(sf::Color(100, 250, 50));
Engine.AddEntity(shape, 5);
编译显示没有问题
您使用的 SFML 库是使用与您 link 您的应用程序所针对的不同运行时或不同运行时 ABI 编译的。
如果您的 SFML 库不是使用与您相同的编译器编译的,那么您需要重建。
如果您在您的应用程序上设置了任何特殊标志(例如不同的 ABI、C++14 等),您将必须使用相同的标志重建 SFML 或将它们从您的项目中删除。
它有时也会发生,因为它不会影响整个运行时库,但会影响 std::string
等部分,这些部分在调用 loadFromFile
函数时会用到。