С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/103: Рейтинг темы: голосов - 103, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 05.04.2023
Сообщений: 22

После компиляции кода с помощью g++, при попытке запустить проект выходит ошибка: Точка входа в процедуру

07.11.2024, 17:37. Показов 39759. Ответов 6

Студворк — интернет-сервис помощи студентам
Решил выйти из зоны комфорта Visual Studio и его зеленой кнопки, и начать компилировать все через g++ ради интереса. Написал простой код на SFML 2.6.1 (g++ версии 14.1.0), закинул в папку с файлов кода папку SFML и вбил в консоль следующую команду:

g++ -g main.cpp -o main -I"C:\Projects\TestParsing\SFML\includ e" -L"C:\Projects\TestParsing\SFML\lib" -lsfml-graphics -lsfml-window -lsfml-system

Код C++:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <SFML/Graphics.hpp>
int main() {
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
    while (window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        window.clear();
        window.display();
    }
    return 0;
}
Код успешно компилируется, но при запуске exe файла выходит ошибка:

Точка входа в процедуру "_ZN2sf12RenderTargetSclearERKNS_SColorE " не найдена в библиотеке DLL.

Как это исправить? Почему эта ошибка выходит?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.11.2024, 17:37
Ответы с готовыми решениями:

При попытке запустить процедуру Saving во время выполнения saveFileDialog1.ShowDialog выходит ошибка
Есть код: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; ...

Не могу запустить WPF проект. Не найдена точка входа Main. Ничего не понимаю...
Создал проект WPF. Удалил MainWindow.xaml, MainWindow.xaml.cs, App.xaml, App.xaml.cs. Потом такие же файлы скопировал с другого проекта и...

Ошибка: "Точка входа в процедуру gxx_personality_sj0 не найдена" при запуске приложения
имеется код: #include &lt;SFML/Graphics.hpp&gt; int main() { sf::RenderWindow window(sf::VideoMode(200, 200), &quot;test&quot;); ...

6
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,329
Записей в блоге: 2
07.11.2024, 21:15
Библиотека под "новый" компилятор тоже пересобрана? А то студийные либы подходят только к студии
0
0 / 0 / 0
Регистрация: 05.04.2023
Сообщений: 22
08.11.2024, 11:05  [ТС]
SFML 2.6.1 скачивал для GCC 13.1.0 (только эту версию нашел на официальном сайте SFML). g++ версии 14.1.0. Не уж то из-за этого такие проблемы?(
0
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,329
Записей в блоге: 2
08.11.2024, 11:31
Цитата Сообщение от Aichi Посмотреть сообщение
Не уж то из-за этого такие проблемы?
Скорее всего, у гнутых компиляторов надо пересобирать под каждую версию компилятора, а не как у студии один раз собрал и пользуешься всеми версиями (по крайней мере 15-22 точно)
0
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
09.11.2024, 23:42
Лучший ответ Сообщение было отмечено Aichi как решение

Решение

Я воспроизвёл проблему у себя. Скачал SFML-2.6.1-windows-gcc-13.1.0-mingw-64-bit.zip и скачал MinGW 14.1.0 здесь: https://winlibs.com/



Проблема воспроизвелась:



Я скачал MinGW 13.1.0, но проблема повторилась. Спросил на официальном дискорде SFML. Оказалось, что есть ссылка на правильный MinGW здесь: https://www.sfml-dev.org/download/sfml/2.6.1/ Вот прямая ссылка на архив MinGW 13.1.0 со страницы SFML. Я проверил, с ней работает. Либо другой вариант - соберите из исходников с помощью CMake GUI и установленной у вас версии компилятора.

Можете свои приложения собирать с помощью CMake из консоли, либо можете открыть CMakeLists.txt в Qt Creator и тогда сможете собирать на одну кнопку (или на Ctrl+R). Можете скачать Qt Creator v14.0.2, x64: https://terabox.com/s/1wYaUa0xWZcxwyjS-Iq53Cw Установщик весит 335 MB. Если захотите попробовать эту IDE и CMake, то пишите в текущей теме, если есть вопросы или будут проблемы.

Ваш пример можно запустить из консоли с помощью CMake следующим образом. Создайте пустую папку для нового проекта. В ней создайте
файл с именем CMakeLists.txt и скопируйте следующее содержимое в него:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cmake_minimum_required(VERSION 3.20)
 
project(sfml-find-package)
# USE the WIN32 key to hide the console like this:
# add_executable(app WIN32)
add_executable(app)
 
target_sources(app
PRIVATE
    src/main.cpp
)
 
find_package(SFML 2.6 COMPONENTS system window graphics REQUIRED)
target_link_libraries(app sfml-system sfml-window sfml-graphics)
 
# target_link_options(app PRIVATE -static)
Создайте папку src, а в ней создайте файл main.cpp:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <SFML/Graphics.hpp>
 
int main() {
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
    while (window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        window.clear();
        window.display();
    }
    return 0;
}
Создайте два батника в корне проекта:

config-win.bat

Bash
1
cmake -G "MinGW Makefiles" -S . -B dist/win -DSFML_DIR="E:/libs/SFML-2.6.1/lib/cmake/SFML"
build-win.bat

Bash
1
2
cd dist\win
cmake --build .
В батнике "config-win.bat" после "-DSFML_DIR=" нужно будет поменять путь на ваш путь, куда вы разархивировали SFML.

Теперь нужно один раз провести конфигурацию командой в консоли: config-win, а потом собрать проект командой: build-win, далее будет создан app.exe, который можно запустить командой: app, а консоль окажется в "dist\win", откуда можно запускать команду "cmake --build .", а конфигурировать не нужно если вы меняете что-то в CMakeLists.txt - будет само сконфигурировано после "cmake --build ."

Миниатюры
1
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
10.11.2024, 00:10
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Можете свои приложения собирать с помощью CMake из консоли, либо можете открыть CMakeLists.txt в Qt Creator и тогда сможете собирать на одну кнопку (или на Ctrl+R)
Напишу на всякий случай, что в Qt Creator надо надо просто открыть CMakeLists.txt и добавить только один путь к SFML. Для этого нужно на левой панели инструментов нажать кнопку "Project". Вы увидите таблицу, куда нужно добавить Directory с ключом SFML_DIR и значением: E:/libs/SFML-2.6.1/lib/cmake/SFML (у вас будет немного другой путь - куда вы разархивировали SFML). Под таблицей есть кнопка, чтобы применить изменения. Теперь переходите на вкладку Edit и запускаете проект. Можно ставить точки останова и выполнять программу по шагам.

Добавлено через 16 минут
Кстати, если собрать приложение один раз из консоли и потом открыть в CMakeLists.txt в Qt Creator, то ничего вручную добавлять не нужно. Можно ставить точки останова:



Миниатюры
0
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
10.11.2024, 01:13
Если решите попробовать Qt Creator и с TeraBox будет долго качаться, то по этой ссылки на MediaFire должно быстрее скачаться.

Добавлю ещё, что на CMake можно легко включить все DLL из SFML в один EXE, а так же такие зависимости от MinGW, как: libstdc++-6.dll, libgcc_s_seh-1.dll и libwinpthread-1.dll Надо добавить в CMakeLists.txt вашего проекта эти две строчки:

Code
1
2
set(SFML_STATIC_LIBRARIES TRUE)
target_link_options(app PRIVATE -static)
В команде конфигурации можно добавить: -DCMAKE_BUILD_TYPE=Release если вы ходите собрать в Release.

В MinGW входит утилита "strip.exe" (находится в папке bin), которая уберёт ненужное из EXE командой:

Code
1
strip -s app.exe
Из вашей программы получился EXE весом 1619 KB без зависимостей:



Если нужно будет скрыть консоль в релизе, то добавьте WIN32 здесь:

Code
1
add_executable(app WIN32)
Если захотите зашить в EXE ассеты: текстовые файлы, изображения, звуковые файлы и т.д., то можете добавить код:

Code
1
2
3
4
5
6
7
8
9
10
11
    include(FetchContent)
    FetchContent_Declare(
      battery-embed
      GIT_REPOSITORY https://github.com/batterycenter/embed.git
      GIT_TAG        main
    )
    FetchContent_MakeAvailable(battery-embed)
    b_embed(app assets/shaders/texture.vert)
    b_embed(app assets/shaders/texture.frag)
    b_embed(app assets/models/floor/stoneFloor.dae)
    b_embed(app assets/models/floor/stoneFloor.png)
А в программе прочитать так содержимое текстовых файлов:

C++
1
2
    std::string vShaderSource = b::embed<"assets/shaders/texture.vert">().str();
    std::string fShaderSource = b::embed<"assets/shaders/texture.frag">().str();
Либо PNG-файлы:

C++
1
2
const unsigned char *stoneFloorData =
    (const unsigned char*)b::embed<"assets/models/floor/stoneFloor.png">().data();
Миниатюры
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.11.2024, 01:13
Помогаю со студенческими работами здесь

Задача на массивы. После компиляции всё запускается, но при попытке выполнить вываливается ошибка...
Сама задача: Элементы каждого из массивов x и y упорядочены по неубыванию. Объединить элементы этих двух массивов в один массив z так,...

При запуске игры ошибка: Точка входа в процедуру rib_find_file_provider не найдена в библиотеке dll mss32.dll
Не могу включить игру выходит ошибка:Точка входа в процедуру rib_find_file_provider не найдена в библиотеке dll mss32.dll. Что делать?

При запуске Nero ошибка "Точка входа в процедуру не найдена в библиотеке DLL uNeroErr.dll
Доброй ночи! Помогите пожалуйста чайнику! При запуске Nero выскакивает ошибка: Точка входа в процедуру...

Ошибка: точка входа в процедуру не найдена
Сегодня скачал и установил Adobe Premiere Pro. При запуске выдает ошибку: Точка входа в процедуру CreateDXGIFactory2 не найдена в...

Ошибка точка входа в процедуру DeviceEventWorker
Каждые 20 минут вылезает ошибка Точка входа в процедуру deviceevntworker не найдена в библиотеке DLL к файлу service.exe Логи прикрепил.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru