【问题标题】:Undefined reference errors are coming when trying to compile a c++ project that uses SFML library尝试编译使用 SFML 库的 c++ 项目时出现未定义的引用错误
【发布时间】:2015-08-21 16:58:03
【问题描述】:

我在 linux 中编译一个简单的程序时遇到了一些问题:-

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        window.clear();
        window.display();
    }

    return 0;
}

当我尝试从终端(或 IDE)编译这个程序时,这些未定义的引用错误出现了:-

/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_action@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_list_entry_get_next@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_unref@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_list_entry_get_name@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_enumerate_unref@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_unref@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_new@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_receive_device@LIBUDEV_183'
/usr/local/lib/libsfml-graphics.so: undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_devnode@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_enable_receiving@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_enumerate_new@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_get_fd@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_unref@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_property_value@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_filter_add_match_subsystem_devtype@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_enumerate_get_list_entry@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_enumerate_scan_devices@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_enumerate_add_match_subsystem@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_syspath@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_sysattr_value@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_new_from_netlink@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_new_from_syspath@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_parent_with_subsystem_devtype@LIBUDEV_183'
collect2: ld returned 1 exit status

编辑:

为了编译程序,我输入了:-

g++ -c main.cpp

之后,将 sfml 库链接到我输入此行的程序:-

g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system

【问题讨论】:

  • 你能准确地显示你在终端中输入的内容来编译它吗?
  • @Matt 是的,我添加了。
  • 你用-ludev试过了吗?
  • 无论如何我将我的操作系统升级到 ubuntu 14.04 并且我在软件中心获得了正确安装的 sfml 2.1。这样问题就解决了。
  • 我遇到了类似的问题,只好将 g++ 升级到 4.9。

标签: ubuntu-12.04 sfml undefined-reference


【解决方案1】:

正确链接lib文件夹的文件。

【讨论】:

  • 如果你不介意的话,你能用一个例子解释一下如何正确链接文件吗? :)
  • 解释你的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-15
  • 2015-06-25
  • 2020-10-15
  • 2013-03-04
  • 2018-07-14
  • 2021-12-28
  • 2022-11-03
相关资源
最近更新 更多