我學習使用SFML與製作小遊戲的想法,到目前爲止,我已經創建了一個窗口和混亂有關它的設置,並設置了抽獎循環和事件處理程序。SFML loadFromFile未定義參考
麻煩啓動一次我試着用下面的代碼添加到我的第一個紋理:
#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);
}
這是一個不同的圖像字面上的SFML tutorial page給出的示例代碼之外。
當我嘗試編譯此我得到以下錯誤:
||=== 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庫都包含在構建選項(我使用的代碼::與海灣合作委員會MinGW的塊) 。
https://drive.google.com/file/d/0B4qzXcgqbLZtcHJWUy1vSUhpdVk/view?usp=sharing
其他主題我見過處理的人取得了自己的功能未定義的引用,但在這裏我使用的庫。
編輯:我只是試着與同一libary基本形狀:
sf::CircleShape *shape = new sf::CircleShape(50);
// set the shape color to green
shape->setFillColor(sf::Color(100, 250, 50));
Engine.AddEntity(shape, 5);
來編譯和顯示沒有問題。
不過,我要補充的是,即使你修復未定義引用錯誤,你將面對的'白色正方形problem'。我也不認爲這是一個好的設計,只要你可以使用堆。爲什麼你的'sf :: Sprite'-Instance不在堆棧上? – NaCl
這個想法是保持背景或按鈕等對象的執行以及繪製循環的分離,其中繪製循環只有一個指向它需要繪製的對象的指針。這裏的對象實現還沒有實現。如果我把它放在堆棧中,它會在它被繪製的時候被清理乾淨。 –
您的紋理在繪製前被清理乾淨。精靈只有一個指向紋理的指針,而不是紋理本身的整個副本。因此你會注意到紋理不會被繪製。 – NaCl