Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: Strange linking problem: gcc/linux  (Read 2177 times)

0 Members and 1 Guest are viewing this topic.

pfos.bmth

  • Newbie
  • *
  • Posts: 2
    • View Profile
Strange linking problem: gcc/linux
« on: May 14, 2012, 01:16:06 am »
New to SFML, just installed it.
I tried to run the sample included in Code::Blocks -

#include <SFML/Graphics.hpp>

int main()
{
    // Create the main window
    sf::RenderWindow App(sf::VideoMode(800, 600), "SFML window");

    // Load a sprite to display
    sf::Image Image;
    if (!Image.LoadFromFile("cute_image.jpg"))
        return EXIT_FAILURE;
    sf::Sprite Sprite(Image);

        // Start the game loop
    while (App.IsOpened())
    {
        // Process events
        sf::Event Event;
        while (App.GetEvent(Event))
        {
            // Close window : exit
            if (Event.Type == sf::Event::Closed)
                App.Close();
        }

        // Clear screen
        App.Clear();

        // Draw the sprite
        App.Draw(Sprite);

        // Update the window
        App.Display();
    }

    return EXIT_SUCCESS;
}
 

- it compiles fine, but when it runs I get error:

"symbol lookup error: /usr/local/lib/libsfml-window.so.1.6: undefined symbol: _ZN2sf7Unicode11UTF8OffsetsE"

So I try to compile it outside of CB with g++ using -lsfml-graphics -lsflm-window -lsflm-system again it compiles OK, but get the same error when it runs.

So I come to these forums and google to look for help, but nothing suggested works for me.
While here I find another sample file -

#include <SFML/Audio.hpp>
 #include <SFML/Graphics.hpp>
 
 int main()
 {
     // Create the main window
     sf::RenderWindow App(sf::VideoMode(800, 600), "SFML window");
 
     // Load a sprite to display
     sf::Image Image;
     if (!Image.LoadFromFile("cute_image.jpg"))
         return EXIT_FAILURE;
     sf::Sprite Sprite(Image);
 
     // Create a graphical string to display
     sf::Font Arial;
     if (!Arial.LoadFromFile("arial.ttf"))
         return EXIT_FAILURE;
     sf::String Text("Hello SFML", Arial, 50);

 
     // Load a music to play
     sf::Music Music;
     if (!Music.OpenFromFile("nice_music.ogg"))
         return EXIT_FAILURE;

     // Play the music
     Music.Play();

     // Start the game loop
     while (App.IsOpened())
     {
         // Process events
         sf::Event Event;
         while (App.GetEvent(Event))
         {
             // Close window : exit
             if (Event.Type == sf::Event::Closed)
                 App.Close();
         }
 
         // Clear screen
         App.Clear();
 
         // Draw the sprite
         App.Draw(Sprite);
 
         // Draw the string
         App.Draw(Text);
 
         // Update the window
         App.Display();
     }
 
     return EXIT_SUCCESS;
 }
 

- this compiles and runs no problem. When I compare the files I cant see much difference so I strip it back until I get the error again.  I commented out all the audio and it ran fine; I then commented out the text/font sections and I get the error at runtime.  The error will go away if I leave in the font loading section, even if I then don't display any text, or even an image, -

#include <SFML/Audio.hpp>
 #include <SFML/Graphics.hpp>
 
 int main()
 {
     // Create the main window
     sf::RenderWindow App(sf::VideoMode(800, 600), "SFML window");
 
     // Load a sprite to display
/*     sf::Image Image;
     if (!Image.LoadFromFile("cute_image.jpg"))
         return EXIT_FAILURE;
     sf::Sprite Sprite(Image);
*/

     // Create a graphical string to display
     sf::Font Arial;
     if (!Arial.LoadFromFile("arial.ttf"))
         return EXIT_FAILURE;
//     sf::String Text("Hello SFML", Arial, 50);

 
     // Load a music to play
/*     sf::Music Music;
     if (!Music.OpenFromFile("nice_music.ogg"))
         return EXIT_FAILURE;

     // Play the music
     Music.Play();
*/

     // Start the game loop
     while (App.IsOpened())
     {
         // Process events
         sf::Event Event;
         while (App.GetEvent(Event))
         {
             // Close window : exit
             if (Event.Type == sf::Event::Closed)
                 App.Close();
         }
 
         // Clear screen
         App.Clear();
 
         // Draw the sprite
//         App.Draw(Sprite);
 
         // Draw the string
//         App.Draw(Text);
 
         // Update the window
         App.Display();
     }
 
     return EXIT_SUCCESS;
 }
 

Can anyone explain this?

SFML 1.6
gcc 4.6.1
linux mint 12

*Edited formatting
**Edited formatting (again)(thanks eXpl0it3r)
« Last Edit: May 14, 2012, 03:13:45 pm by pfos.bmth »

eXpl0it3r

  • SFML Team
  • Hero Member
  • *****
  • Posts: 11030
    • View Profile
    • development blog
    • Email
Re: Strange linking problem: gcc/linux
« Reply #1 on: May 14, 2012, 07:54:38 am »
*Edited formatting
You can also use 'code=cpp' to highlight your code. ;)

For your problem, don't us SFML 1.6. It has a few bugs and SFML 2 has already a RC which means there will be very soon a release.
If you're new to SFML it will only cost you much time to learn the SFML 1.6 only to have to relearn the way SFML 2 works.

Quote
symbol lookup error: /usr/local/lib/libsfml-window.so.1.6: undefined symbol: _ZN2sf7Unicode11UTF8OffsetsE
It seems you have an outdated library where the function Unicode11UTF8Offsets... isn't defined.
I'm not sure which part of SFML uses this function an why it only happens from time to time, but like I said: use SFML 2.
Official FAQ: https://www.sfml-dev.org/faq.php
Official Discord Server: https://discord.gg/nr4X7Fh
——————————————————————
Dev Blog: https://duerrenberger.dev/blog/

pfos.bmth

  • Newbie
  • *
  • Posts: 2
    • View Profile
Re: Strange linking problem: gcc/linux
« Reply #2 on: May 14, 2012, 03:16:59 pm »
*Edited formatting
You can also use 'code=cpp' to highlight your code. ;)

For your problem, don't us SFML 1.6. It has a few bugs and SFML 2 has already a RC which means there will be very soon a release.
If you're new to SFML it will only cost you much time to learn the SFML 1.6 only to have to relearn the way SFML 2 works.

Quote
symbol lookup error: /usr/local/lib/libsfml-window.so.1.6: undefined symbol: _ZN2sf7Unicode11UTF8OffsetsE
It seems you have an outdated library where the function Unicode11UTF8Offsets... isn't defined.
I'm not sure which part of SFML uses this function an why it only happens from time to time, but like I said: use SFML 2.

Thanks for your response. (Thanks also for the formatting hint!  :)  )

I will install SFML2 and report back - it may take a few hours.