-
#2
Косяк в коде скрипта. Самоубийство самому искать ошибку в чужом коде не запуская игру. Обратись к автору.
-
#3
Косяк в коде скрипта. Самоубийство самому искать ошибку в чужом коде не запуская игру. Обратись к автору.
Проблема в том что у остальных то он работает…. Если бы была ошибка в коде то не работало бы у всех…
-
#4
Проблема в том что у остальных то он работает…. Если бы была ошибка в коде то не работало бы у всех…
Мб нет fAwesome
-
#5
Последнее редактирование:
-
#6
Чел. Это не то что ты предположил но твой вопрос (предположение) мне очень помогло.
-
#7
РЕШЕНИЕ
Для решение данной проблемы вам необходим закинуть папку «resource» в moonloader.
Я плохо разбираюсь в программировании, поэтому на протяжении 2-3 дней пытался найти решение в интернете. За весь поиск я наткнулся на 2 подобные темы но там это проблему никто не решил. Я знаю может это и пустяковая ошибка но на ее решение я потратил как мне кажется очень много времени.
Всем удачи!
-
resource.zip
197.8 KB
· Просмотры: 1,107
- Must be building with
-O3
IMGUI_ENABLE_FREETYPE
is defined (or the call tostbrp_pack_rects
inImFontAtlasBuildWIthStbTruetype
is commented out)- Conditionally does
throw SomethingThatCanThrow();
(eg.throw std::runtime_error { msg }
,throw new int;
,throw std::string { msg };
)
It’s weird… (If the assertion function always returns or #define IM_ASSERT(_EXPR) (void)0
then it can be duplicated with only -O1
+ IMGUI_ENABLE_FREETYPE
or same commented stbrp_pack_rects
)
diff --git a/imconfig.h b/imconfig.h index 876cf32..28a886e 100644 --- a/imconfig.h +++ b/imconfig.h @@ -19,6 +19,22 @@ //#define IM_ASSERT(_EXPR) MyAssert(_EXPR) //#define IM_ASSERT(_EXPR) ((void)(_EXPR)) // Disable asserts +#ifdef TRIGGER_BUG_5343 +# define IM_ASSERT(_EXPR) NonHintingAssert(_EXPR) +extern int runtime_value; +int MayThrow() +{ + if(runtime_value) + return 4; + throw 2; +} +void NonHintingAssert(bool ok) +{ + if(!ok) + throw MayThrow(); // any function or constructor the may also conditionally throw +} +#endif + //---- Define attributes of all API symbols declarations, e.g. for DLL under Windows // Using Dear ImGui via a shared library is not recommended, because of function call overhead and because we don't guarantee backward nor forward ABI compatibility. // DLL users: heaps and globals are not shared across DLL boundaries! You will need to call SetCurrentContext() + SetAllocatorFunctions() diff --git a/imgui_draw.cpp b/imgui_draw.cpp index 6082f10..140e571 100644 --- a/imgui_draw.cpp +++ b/imgui_draw.cpp @@ -2512,7 +2512,9 @@ static bool ImFontAtlasBuildWithStbTruetype(ImFontAtlas* atlas) if (src_tmp.GlyphsCount == 0) continue; +#ifndef NO_PACK_RECTS stbrp_pack_rects((stbrp_context*)spc.pack_info, src_tmp.Rects, src_tmp.GlyphsCount); +#endif // Extend texture height and mark missing glyphs as non-packed so we won't render them. // FIXME: We are not handling packing failure here (would happen if we got off TEX_HEIGHT_MAX or if a single if larger than TexWidth?) @@ -2630,6 +2632,11 @@ void ImFontAtlasBuildPackCustomRects(ImFontAtlas* atlas, void* stbrp_context_opa ImVector<ImFontAtlasCustomRect>& user_rects = atlas->CustomRects; IM_ASSERT(user_rects.Size >= 1); // We expect at least the default custom rects to be registered, else something went wrong. +#ifdef WORKAROUND_BUG_5343 + if (user_rects.Size < 1) + __builtin_unreachable(); +#endif + ImVector<stbrp_rect> pack_rects; pack_rects.resize(user_rects.Size); memset(pack_rects.Data, 0, (size_t)pack_rects.size_in_bytes());
$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.1/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.2.1 20230201 (GCC)
$ gcc -O3 -I. -DIMGUI_ENABLE_FREETYPE -c imgui_draw.cpp # (no output) $ gcc -O3 -I. -DIMGUI_ENABLE_FREETYPE -c imgui_draw.cpp -DTRIGGER_BUG_5343 imgui_draw.cpp: In function ‘void ImFontAtlasBuildPackCustomRects(ImFontAtlas*, void*)’: imgui_draw.cpp:2642:11: warning: ‘void* memset(void*, int, size_t)’ specified size between 18446744071562067968 and 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=] 2642 | memset(pack_rects.Data, 0, (size_t)pack_rects.size_in_bytes()); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ gcc -O3 -I. -DIMGUI_ENABLE_FREETYPE -c imgui_draw.cpp -DTRIGGER_BUG_5343 -DWORKAROUND_BUG_5343 # (no output)
$ gcc -O3 -DNO_PACK_RECTS -c imgui_draw.cpp # (no output) $ gcc -O3 -DNO_PACK_RECTS -c imgui_draw.cpp -DTRIGGER_BUG_5343 imgui_draw.cpp: In function ‘void ImFontAtlasBuildPackCustomRects(ImFontAtlas*, void*)’: imgui_draw.cpp:2642:11: warning: ‘void* memset(void*, int, size_t)’ specified size between 18446744071562067968 and 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=] 2642 | memset(pack_rects.Data, 0, (size_t)pack_rects.size_in_bytes()); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ gcc -O3 -DNO_PACK_RECTS -c imgui_draw.cpp -DTRIGGER_BUG_5343 -DWORKAROUND_BUG_5343 # (no output)
EDIT: Tried to narrow it down further by removing parts of imgui_draw.cpp until the warning went away (hoping to find a minimal snippet that could be reported). At some point adding or removing one of StyleColorsDark
‘s lines determined whether that warning shows up!
-
#2
Косяк в коде скрипта. Самоубийство самому искать ошибку в чужом коде не запуская игру. Обратись к автору.
-
#3
Косяк в коде скрипта. Самоубийство самому искать ошибку в чужом коде не запуская игру. Обратись к автору.
Проблема в том что у остальных то он работает…. Если бы была ошибка в коде то не работало бы у всех…
-
#4
Проблема в том что у остальных то он работает…. Если бы была ошибка в коде то не работало бы у всех…
Мб нет fAwesome
-
#5
Последнее редактирование: 12 Мар 2021
-
#6
Чел. Это не то что ты предположил но твой вопрос (предположение) мне очень помогло.
-
#7
РЕШЕНИЕ
Для решение данной проблемы вам необходим закинуть папку «resource» в moonloader.
Я плохо разбираюсь в программировании, поэтому на протяжении 2-3 дней пытался найти решение в интернете. За весь поиск я наткнулся на 2 подобные темы но там это проблему никто не решил. Я знаю может это и пустяковая ошибка но на ее решение я потратил как мне кажется очень много времени.
Всем удачи!
-
resource.zip
197.8 KB
· Просмотры: 974
#if defined(__CYGWIN__) && !defined(_WIN32)
/* Cygwin POSIX under Microsoft Windows. -------------------- */
#endif
https://web.archive.org/web/20140625123925/http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system
So maybe
#include <stdio.h> // vsnprintf, sscanf, printf
#if !defined(alloca)
#ifdef _WIN32
#include <malloc.h> // alloca
#if !defined(alloca)
#define alloca _alloca // for clang with MS Codegen
#endif
#elif defined(__GLIBC__) || defined(__sun)
#include <alloca.h> // alloca
#else
#include <stdlib.h> // alloca
#endif
#else // not _WIN32
#if defined(__CYGWIN__)
#include <alloca.h> // alloca
#endif
#endif
But this still dont solves Cygwin not posix which is _WIN32 but must include alloca.h
Perhaps
#include <stdio.h> // vsnprintf, sscanf, printf
#if !defined(alloca)
#ifdef _WIN32
#if defined(__CYGWIN__)
#include <alloca.h> // alloca
#else //__CYGWIN__
#include <malloc.h> // alloca
#if !defined(alloca)
#define alloca _alloca // for clang with MS Codegen
#endif
#endif //__CYGWIN__
#elif defined(__GLIBC__) || defined(__sun)
#include <alloca.h> // alloca
#else
#include <stdlib.h> // alloca
#endif
#else // not _WIN32
#if defined(__CYGWIN__)
#include <alloca.h> // alloca
#endif
#endif
But too complicated. A rework:
#include <stdio.h> // vsnprintf, sscanf, printf
#if defined(__CYGWIN__)
#include <alloca.h> // alloca
#endif//__CYGWIN__
#if !defined(alloca)
#ifdef _WIN32
#include <malloc.h> // alloca
#if !defined(alloca)
#define alloca _alloca // for clang with MS Codegen
#endif
#elif defined(__GLIBC__) || defined(__sun)
#include <alloca.h> // alloca
#else
#include <stdlib.h> // alloca
#endif
#endif
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
- Pick a username
- Email Address
- Password
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
I am trying to compile a project using ImGui
however I get these errors:
Severity Code Description Project File Line Suppression State
Error C1083 Cannot open source file: 'srcvendorimguiimgui_widgets.cpp': No such file or directory SDL2_IMGUI_TEST D:Not_StreamingCommonly_UsedProgrammingC++ProjectsSDL2_IMGUI_TESTSDL2_IMGUI_TESTc1xx 1
Error C1083 Cannot open source file: 'srcvendorimguiimgui.cpp': No such file or directory SDL2_IMGUI_TEST D:Not_StreamingCommonly_UsedProgrammingC++ProjectsSDL2_IMGUI_TESTSDL2_IMGUI_TESTc1xx 1
Error C1083 Cannot open source file: 'srcvendorimguiimgui_demo.cpp': No such file or directory SDL2_IMGUI_TEST D:Not_StreamingCommonly_UsedProgrammingC++ProjectsSDL2_IMGUI_TESTSDL2_IMGUI_TESTc1xx 1
Error C1083 Cannot open source file: 'srcvendorimguiimgui_draw.cpp': No such file or directory SDL2_IMGUI_TEST D:Not_StreamingCommonly_UsedProgrammingC++ProjectsSDL2_IMGUI_TESTSDL2_IMGUI_TESTc1xx 1
Error C1083 Cannot open source file: 'srcvendorimguiimgui_impl_opengl3.cpp': No such file or directory SDL2_IMGUI_TEST D:Not_StreamingCommonly_UsedProgrammingC++ProjectsSDL2_IMGUI_TESTSDL2_IMGUI_TESTc1xx 1
Error C1083 Cannot open source file: 'srcvendorimguiimgui_impl_sdl.cpp': No such file or directory SDL2_IMGUI_TEST D:Not_StreamingCommonly_UsedProgrammingC++ProjectsSDL2_IMGUI_TESTSDL2_IMGUI_TESTc1xx 1
Error C1083 Cannot open source file: 'srcvendorimguiimgui_stdlib.cpp': No such file or directory SDL2_IMGUI_TEST D:Not_StreamingCommonly_UsedProgrammingC++ProjectsSDL2_IMGUI_TESTSDL2_IMGUI_TESTc1xx 1
Error C1083 Cannot open source file: 'srcvendorimguiimgui_tables.cpp': No such file or directory SDL2_IMGUI_TEST D:Not_StreamingCommonly_UsedProgrammingC++ProjectsSDL2_IMGUI_TESTSDL2_IMGUI_TESTc1xx 1
This is really quite odd because the files USED to be inside a folder called srcvendor
but are now in another folder called Dependenciesimgui
. It doesn’t make sense to me why it is even mentioning a folder called vendor at all? Here are my search directories for #include
$(SolutionDir)Dependenciesimgui
$(SolutionDir)DependenciesGLEWinclude
$(SolutionDir)DependenciesSDL2include
There is a preprocessor for GLEW but not IMGUI, and there are linker settings for GLEW AND SDL2 but not IMGUI. These are compile errors. What could be the problem?
-
#1
В чём проблема? Хочу компилировать, как указанно в инструкции, но получаю ошибки
Уже скачал и VC 2017
Попробовал указывать путь в include до этого файла
VC его просто не видит. Хотя в обозревателе решений он есть.
Ещё не видит MinHook.h, stdafx.h
-
#2
Начни с ../
И после доберись до этого файла (подсказки должна вылезти)
-
#3
Начни с ../
И после доберись до этого файла (подсказки должна вылезти)
Сделал изменение везде выдавало такую ошибку, но теперь вот
Ошибка C1010 непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву «#include «stdafx.h»» в источник. Universal-ImGui-D11-Hook C:ProjectImGuiimgui_draw.cpp
-
#4
Причём, в этом же файле #include imgui.h нормально работает, а в другом пришлось путь указывать. Что может быть не так?
Пробую компилировать вот это
-
#5
установи проект не как исполняемый файл а динамическая библиотека dll
-
#6
#include «stdafx.h» — отключи предзаголовки файлов в настройках проекта
-
#7
#include «stdafx.h» — отключи предзаголовки файлов в настройках проекта
Всё сделал как сказал, теперь совсем другое
-
#8
Сейчас скачаю сам посмотрю
-
#9
Сейчас скачаю сам посмотрю
Хорошо, спасибо
-
#10
У меня получилось скомпилировать, попробуй этот проект принцип один и тот же и там VS настроена
и он более обновленный под все DirectX
-
#11
У меня получилось скомпилировать, попробуй этот проект принцип один и тот же и там VS настроена
и он более обновленный под все DirectX
Это получилось компилировать, а то почему не как? Может у меня VS как то не так установлена?
Последнее редактирование: 30.05.2022
-
#12
У меня получилось скомпилировать, попробуй этот проект принцип один и тот же и там VS настроена
и он более обновленный под все DirectX
когда я делал инжект, у меня стал лагать комп(процесс: Notepad.exe)
-
#13
У меня получилось скомпилировать, попробуй этот проект принцип один и тот же и там VS настроена
и он более обновленный под все DirectX
не запускается окно
Мне просто нужно вставить файл ImGui в папку include, чтобы правильно его настроить?
Нет. Заголовочные файлы необходимы для вашего приложения, чтобы увидеть, какие символы существуют для правильной компиляции. Но во время связывания эти символы действительно должны присутствовать, и добавление одного заголовочного файла не приведет к их добавлению. Вам нужно перенести все исходные файлы (файлы cpp и, возможно, соответствующие им заголовочные файлы) в ваше приложение и скомпилировать их все вместе.
Сборка приложения на C++ состоит из двух основных этапов: компиляция и компоновка. Ваш путь к заголовку содержит всю информацию для стадии компиляции, но не для ссылок. Только фактические исходные файлы (которые не являются заголовочными файлами) могут содержать символы, необходимые для определения того, что объявлено в ваших заголовках. Если вы их тоже не добавите, то ваши символы не определены, что объясняет вашу ошибку.
Блок кода автоматически заполняет меня функциями ImGui, когда я начинаю писать ‘i’.
Это потому, что вы включили заголовочный файл, который является частью процесса.
У меня только проблемы с переопределением.
И на всякий случай, если вы делаете это, не используйте #include
с любыми файлами.cpp, только файлы заголовков. Если вы #include cpp файлы в более чем одном месте, вы определенно получите несколько ошибок определения, как вы указали.
Loading
Содержание
- Что делать если крашит самп из за moonloader
- Вопрос Крашит с moonloader 026.
- Ошибка Moonloader.asi error line 9 после установки enb
- Вылетает SAMP при установке Moonloader или SampFuncs.
- Информация Поиск и решение ошибки в .lua скрипте
- Примеры ошибок
- Информация MoonLoader — обсуждение
- Vitaliy ishkevych
- Вложения
- NARVELL
- randazzo
- werd0y45
- werd0y45
- werd0y45
- werd0y45
- vortex
- Самперы понимающие в MoonLoader’e помогите с ошибкой!
Что делать если крашит самп из за moonloader
После того, когда ГТА была полностью готова к игре, она прекрасно работала. Никаких вылетов. Одиночку спокойно можно проходить.
Затем был установлен САМП 0.3.7 R1. И на нем тоже все прекрасно работает.
Но затем я нашел здесь, на этом форуме, раздел, в котором прописан разрешенный софт и вспомогательные скрипты, которые не дают никакого преимущества. Я заинтересовался этим. И выяснилось, что для корректной работы подобных вспомогательных скриптов, обязательно наличие SampFuncs и Moonloader.
И вот что происходит после установки: обычная игра, в одиночном режиме, отказывается работать. Дальше экрана загрузки сохранения никуда не грузится.
В САМПе дела обстоят по-другому: сама программа работает как и обычно, но вот при присоединении к серверу загрузка происходит успешно. И можно спокойно бегать, прыгать, ездить. Какое-то время.. Для проверки работоспособности SampSuncs и Moonloader был установлен безобидный скрипт, который показывает на экране реальное время, дату, никнейм игрока, его ID в сессии, и цвет ника. И скрипт работает. Все красиво, и все показывает. Но каждый раз происходит одно и то же.
Не пройдет и 10ти минут, как игра выдаст следующую ошибку, на скрине видно.
Пишу сюда с надеждой, что кто-то, может быть, сталкивался с похожей ситуацией, и сможет мне помочь решить эту проблему?
Вопрос Крашит с moonloader 026.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
benderlybae
Новичок
Вылезает такое окно при запуске игры. Не знаю что делать.
С других сборок всё нормально. Хочу играть на стандартной гта с мунлоадером, но тут такой прикол.
Вложения
.Domen.
Активный
Вылезает такое окно при запуске игры. Не знаю что делать.
С других сборок всё нормально. Хочу играть на стандартной гта с мунлоадером, но тут такой прикол.
Было такое, попробуй переустановить asi loader. Обнови библиотеки C++ 2005. (x64 и x86)
Ошибка Moonloader.asi error line 9 после установки enb
Выдает ошибку при запуске samp’a Moonloader.asi error line 9, Что делать ? «gta/enb» устанавливал, не помогло. Раньше помогало, удалял из корневой папки игры Moonloader.asi,но сейчас нет.
Магомед Гусенов Профи (644) Блин, тут могу порекомендовать установить новую гта са и дргой мод ( Кстати на каком сервере играешь и какой ник? )
Вылетает SAMP при установке Moonloader или SampFuncs.
Недавно решил установить Police Helper. Скачал, установил с помощью автоустановщика, запускаю SAMP. Окно загрузки, и вылет. И так до бесконечности, сколько бы не заходил. Удалил SampFuncs.asi и до сих пор был вылет. Удалил ещё и Moonloader.asi, всё сразу починилось и SAMP стал запускаться, как надо. Но не могу играть без MVD/Police Helper’ов, играю за ПД. Что делать, как устранить вылеты?
Олды играли без всяких хелперов, тупо на биндерах. Выживали же как-то
Я хочу получить нормальный ответ, а не что-то по типу » ы олди биз этава раньши была лудшы мдааа. «
Источник
Информация Поиск и решение ошибки в .lua скрипте
Всем привет, с каждым днем на форуме появляется все больше тем, связанных с неработоспособностью некоторых скриптов. В этой мини-статье я постараюсь показать Вам как можно самому решить некоторые проблемы и не засорять форум.
Поиск ошибки
Для поиска проблем нам необходимо открыть moonloader.log ( «папка с игрой»moonloadermoonloader.log ). Мунлог хранит в себе информацию о работе всех .lua/.luac скриптов. Открыть мунлог можно используя любой текстовый редактор.
После открытия мунлога Вам необходимо найти строку, которая содержит название скрипта и слово «error», сделать это можно даже используя функцию поиска по текстовому документу (CTRL + F).
Нет файла moonloader.log?
Файл moonloader.log должен появится в любом случае (даже если игра крашится). Если же у вас его нет, то это значит что не работает сам moonloader. Убедитесь что у вас установлен ASI Loader и есть файл moonloader.asi в папке с игрой.
Примеры ошибок
В этом случае:
- название — » helper lovli privat «
- файл — » D:GTA 130K BY DAPO SHOWmoonloaderHelpLovlZin.lua «
- строка — » 5 «
- ошибка — » module ‘imgui’ not found «
Для решения данной проблемы нам необходимо знать английский на «базовом» уровне, ну или научится использовать переводчик. После перевода ошибки на русский мы понимаем что скрипт не может найти модуль «imgui» (в данном случае модуль = библиотека). Что бы решить эту ошибку нам надо просто установить imgui. Если ошибка связана с отсутствием модулей sampfuncs.lua, moonloader.lua, vector3d.lua, bitex.lua или matrix3x3.lua, то Вам необходимо переустановить moonloader: https://www.blast.hk/threads/13305/.
Пример №2. cannot load incompatible bytecode
Данная ошибка связана с «несовместимостью» скрипта с вашей версией moonloader. Для начала стоит узнать вашу версию moonloader. Что бы это сделать смотрим на 4 строку в moonloader.log. В нашем случае версия мунлоадера » v.026.5-beta loaded. «, это значит что «вылетевший» скрипт скомпилирован для версии мунлоадера 0.25. Для исправления ошибки можете установить этот скрипт: https://www.blast.hk/threads/35380/.
Пример №3. Неверное написание кода
Небольшое дополнение первого примера: в некоторых случаях вместо пути к файлу самого скрипта может быть путь к файлу библиотеки, например:
Такие сообщения связаны с неверным написанием кода, Вам следует написать автору скрипта.
Пример №4. Microsoft Visual C++ Runtime Libruary (imgui_draw.cpp Line: 1314)
Ошибка связана с отсутствием шрифта, необходимого для работы скрипта. Чаще всего с такой ошибкой сталкиваются из-за отсутствия шрифта Font Awesome. Установить файлы FontAwesome можно тут: https://www.blast.hk/threads/111224/.
Пример №5. Ошибки с GET request
В этом случае нам нужно сделать то же самое что и в первом примере (перевести и загуглить).
Источник
Информация MoonLoader — обсуждение
Vitaliy ishkevych
Новичок
Вложения
Известный
NARVELL
Известный
randazzo
werd0y45
Новичок
Почему гта не запускается?
[13:53:11.625253] (system) Session started.
[13:53:11.626254] (debug) Module handle: 6F6C0000
MoonLoader v.026.3-beta loaded.
Developers: FYP, hnnssy, EvgeN 1137
Copyright (c) 2016, BlastHack Team
Избранное — Lua — ASI — MoonLoader (https://www.blast.hk/moonloader/)
[13:53:11.626254] (info) Working directory: D:Rockstar GamesGTA San Andreasmoonloader
[13:53:11.626254] (debug) FP Control: 0009001F
[13:53:11.626254] (debug) Game: GTA SA 1.0.0.0 US
[13:53:11.626254] (system) Installing pre-game hooks.
[13:53:11.626754] (system) Hooks installed.
[13:53:11.728267] (warn) Memory test «Win32API: ExitProcess» at address 76CE3BC0 has failed. Value is ‘E9 CB C2 5B 90’, expected ‘E9 9B 9C 9F F8’.
Известный
Почему гта не запускается?
[13:53:11.625253] (system) Session started.
[13:53:11.626254] (debug) Module handle: 6F6C0000
MoonLoader v.026.3-beta loaded.
Developers: FYP, hnnssy, EvgeN 1137
Copyright (c) 2016, BlastHack Team
Избранное — Lua — ASI — MoonLoader (https://www.blast.hk/moonloader/)
[13:53:11.626254] (info) Working directory: D:Rockstar GamesGTA San Andreasmoonloader
[13:53:11.626254] (debug) FP Control: 0009001F
[13:53:11.626254] (debug) Game: GTA SA 1.0.0.0 US
[13:53:11.626254] (system) Installing pre-game hooks.
[13:53:11.626754] (system) Hooks installed.
[13:53:11.728267] (warn) Memory test «Win32API: ExitProcess» at address 76CE3BC0 has failed. Value is ‘E9 CB C2 5B 90’, expected ‘E9 9B 9C 9F F8’.
werd0y45
Новичок
Известный
werd0y45
Новичок
werd0y45
Новичок
vortex
Известный
Program: D:GamesЫФЬЗMoonLoader.asi
File: d:devmoonloadermoonloader-srcmo. script_. der.cpp
Line: 9
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts
(Press Retry to debug the application — JIT must be enabled)
—————————
Прервать Повтор Пропустить
—————————
SA-MP 0.3.7
Exception At Address: 0x005B8E75
Base: 0x05750000
Registers:
EAX: 0x0ED28A84 EBX: 0x00000000 ECX: 0x0E020800 EDX: 0x00000000
ESI: 0xFFFFFFFF EDI: 0x6F0E2DA0 EBP: 0x00000000 ESP: 0x0028FD18
EFLAGS: 0x00210206
Stack:
+0000: 0xFFFF002B 0x00007530 0x008C5000 0x00000800
+0010: 0x00000000 0x015EFAB4 0x00B71848 0x0CA575D0
+0020: 0x0028FF78 0x0083D53B 0xFFFFFFFF 0x005B9282
+0030: 0x00869AF8 0x00869B08 0x00869B20 0x00000000
+0040: 0x00869B30 0x00000001 0x00863B10 0x75536C30
+0050: 0x00000000 0x6F0E2DA0 0x41544144 0x50414D5C
+0060: 0x4E4F5A2E 0x00880020 0xFFFFFFFF 0x0082421E
+0070: 0x0082423B 0x00001800 0x00824266 0x00001800
+0080: 0x00000000 0x008211B7 0x00001800 0x49742400
+0090: 0x005B3206 0x00001800 0x0053BCA0 0x00863B10
+00A0: 0x00863A90 0x00863B10 0x0000000A 0x0053E593
+00B0: 0x00863B10 0x00748D00 0x76BF1245 0x00000000
+00C0: 0x0028FF88 0xFFFDE000 0x015E0000 0x00000008
+00D0: 0x015E1CE8 0x00000008 0x00000100 0x00000008
+00E0: 0x00000102 0x44200000 0x44000000 0x00000000
+00F0: 0x00000000 0x00000500 0x00000400 0x00000000
+0100: 0x0028FE54 0x00070728 0x00000200 0x00000000
+0110: 0x01CC0220 0x004AFFB3 0x00000220 0x000001CC
+0120: 0x0000002C 0x0028FE2C 0x00825EA4 0x76BF1245
+0130: 0x00000000 0xFFFDE000 0xFFFFFFFF 0x00821D17
+0140: 0x00000065 0x00000065 0x0028FF88 0x008246F1
+0150: 0x00400000 0x00000000 0x01B22BEC 0x0000000A
+0160: 0x00000094 0x00000006 0x00000001 0x00001DB1
+0170: 0x00000002 0x76726553 0x20656369 0x6B636150
+0180: 0x00003120 0x00000000 0x00000000 0x00000000
+0190: 0x00000000 0x00000000 0x00000000 0x00000000
+01A0: 0x00000000 0x00000000 0x00000000 0x00000000
+01B0: 0x00000000 0x00000000 0x00000000 0x00000000
+01C0: 0x00000000 0x00000000 0x00000000 0x00000000
+01D0: 0x00000000 0x00000000 0x00000000 0x00000000
+01E0: 0x00000000 0x00000000 0x00000000 0x00000000
+01F0: 0x00824588 0x00000000 0x00000000 0xFFFDE000
+0200: 0xC0000005 0x00000000 0x01B22BEC 0x00000044
+0210: 0x01B60578 0x01B62F08 0x01B63260 0x00000000
+0220: 0x00000000 0x00000000 0x00000000 0x00000000
+0230: 0x00000000 0x00000000 0x00000000 0x00000000
+0240: 0x00000000 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF
+0250: 0x00000000 0x00000000 0x0028FE78 0x0028F770
+0260: 0x0028FFC4 0x00825EA4 0x00888078 0x00000000
+0270: 0x0028FF94 0x76BF33CA 0xFFFDE000 0x0028FFD4
Источник
Самперы понимающие в MoonLoader’e помогите с ошибкой!
[21:29:51.479871] (system) Session started.
[21:29:51.479871] (debug) Module handle: 695A0000
MoonLoader v.026.5-beta loaded.
Developers: FYP, hnnssy, EvgeN 1137
Copyright (c) 2016
[21:29:51.479871] (info) Working directory: D:ARIZONA GAMESbinArizonamoonloader
[21:29:51.479871] (debug) FP Control: 0009001F
[21:29:51.479871] (debug) Game: GTA SA 1.0.0.0 US
[21:29:51.479871] (system) Installing pre-game hooks.
[21:29:51.482872] (system) Hooks installed.
[21:29:51.998685] (debug) Initializing opcode handler table
[21:29:51.998685] (debug) package.path = D:ARIZONA GAMESbinArizonamoonloaderlib?.lua;D:ARIZONA GAMESbinArizonamoonloaderlib?init.lua;D:ARIZONA GAMESbinArizonamoonloader?.lua;D:ARIZONA GAMESbinArizonamoonloader?init.lua;.?.lua;D:ARIZONA GAMESbinArizonamoonloaderlib?.luac;D:ARIZONA GAMESbinArizonamoonloaderlib?init.luac;D:ARIZONA GAMESbinArizonamoonloader?.luac;D:ARIZONA GAMESbinArizonamoonloader?init.luac;.?.luac
[21:29:51.998685] (debug) package.cpath = D:ARIZONA GAMESbinArizonamoonloaderlib?.dll;
[21:29:52.024692] (system) Loading script ‘D:ARIZONA GAMESbinArizonamoonloaderhelper.lua’.
[21:29:52.024692] (debug) New script: 095A169C
[21:29:52.044697] (script) helper: [Universal Font]: Шрифт был установлен!
[21:29:52.057699] (error) helper: . NA GAMESbinArizonamoonloaderlibsampeventscore.lua:22: samp.events requires SAMPFUNCS
stack traceback:
[C]: in function ‘assert’
. NA GAMESbinArizonamoonloaderlibsampeventscore.lua:22: in main chunk
[C]: in function ‘require’
D:ARIZONA GAMESbinArizonamoonloaderlibsampevents.lua:7: in main chunk
[C]: in function ‘require’
D:ARIZONA GAMESbinArizonamoonloaderhelper.lua:22: in main chunk
[21:29:52.057699] (error) helper: Script died due to an error. (095A169C)
[21:29:52.059700] (system) Loading script ‘D:ARIZONA GAMESbinArizonamoonloaderlast version helper.luac’.
[21:29:52.059700] (debug) New script: 190E1F5C
[21:29:52.072701] (script) helper: [Universal Font]: Шрифт был установлен!
[21:29:52.082705] (error) helper: . NA GAMESbinArizonamoonloaderlast version helper.luac:0: module ‘lanes’ not found:
no field package.preload[‘lanes’]
no file ‘D:ARIZONA GAMESbinArizonamoonloaderliblanes.lua’
no file ‘D:ARIZONA GAMESbinArizonamoonloaderliblanesinit.lua’
no file ‘D:ARIZONA GAMESbinArizonamoonloaderlanes.lua’
no file ‘D:ARIZONA GAMESbinArizonamoonloaderlanesinit.lua’
no file ‘.lanes.lua’
no file ‘D:ARIZONA GAMESbinArizonamoonloaderliblanes.luac’
no file ‘D:ARIZONA GAMESbinArizonamoonloaderliblanesinit.luac’
no file ‘D:ARIZONA GAMESbinArizonamoonloaderlanes.luac’
no file ‘D:ARIZONA GAMESbinArizonamoonloaderlanesinit.luac’
no file ‘.lanes.luac’
no file ‘D:ARIZONA GAMESbinArizonamoonloaderliblanes.dll’
stack traceback:
[C]: in function ‘require’
. NA GAMESbinArizonamoonloaderlast version helper.luac: in function
[21:29:52.082705] (error) helper: Script died due to an error. (190E1F5C)
[21:30:03.046648] (system) Installing post-load hooks.
[21:30:03.046648] (system) Hooks installed.
[21:39:01.530466] (system) Unloading.
[21:39:01.592522] (system) Session terminated.
Зависимости для этого скрипта были таковы:
- Библиотеки SampEvents
- Dear ImGui
- Rkeys
- Imgui Addons
- Imgui_notf
- Imgui Custom
- fAwesome5
Источник
@CowzMooMoo Sorry but #1586
@coderboyisongithub You need to compile and link all the .cpp files of imgui. The screenshot suggest he didn’t compile or link with imgui_draw.cpp
@ocornut why imgui says it dont need to be build…it can be attached with project.Please update your log
@coderboyisongithub I don’t understand what you mean. All .cpp needs to be compiled like any regular piece of code. This is documented at the top of the README file. Just add the files to your existing project.
No. You already have a project (your app/game). You can add the imgui .cpp files into your project. Don’t create a library if you don’t need to.
I got it»! i added all .cpp files …though it is triggring
error:1>E:ImGUIimgui_draw.cpp(101): error C2006: ‘#include’ : expected a
filename, found ‘identifier’
1>E:ImGUIimgui_draw.cpp(101): fatal error C1083: Cannot open include
file: »: No such file or directory
and it is about (#ifdef IMGUI_STB_RECT_PACK_FILENAME
#include IMGUI_STB_RECT_PACK_FILENAME).Why so?previously a attached .h
files also but faced same error..:(
…
It looks like you defined IMGUI_STB_RECT_PACK_FILENAME
for some reason.?
This place isn’t a community for helping people with general C++ stuff unfortunately. Please read https://github.com/ocornut/imgui/blob/master/.github/CONTRIBUTING.md and when reporting issue please make sure you provide the right amount of information and in a readable format. This will force you to study and narrow down your issue.
I didnt defined IMGUI_STB_RECT_PACK_FILENAME by the way..I is in you
header..I didnt touched your code still>!!
…
The problem is quite simple, really. I had imgui included in my project and I’m no longer using it. However, VS still tries to open them every time I try to compile.
I removed all includes and deleted the files from my project completely. There is no mention of it anywhere. I don’t have it included as an external library either (it’s header-only). I’ve ran out of ideas.
Error log:
1>imgui.cpp
1>c1xx : fatal error C1083: Cannot open source file: 'Sourceimguiimgui.cpp': No such file or directory
1>imgui_draw.cpp
1>c1xx : fatal error C1083: Cannot open source file: 'Sourceimguiimgui_draw.cpp': No such file or directory
1>imgui_impl_glfw.cpp
1>c1xx : fatal error C1083: Cannot open source file: 'Sourceimguiimgui_impl_glfw.cpp': No such file or directory
1>imgui_impl_opengl3.cpp
1>c1xx : fatal error C1083: Cannot open source file: 'Sourceimguiimgui_impl_opengl3.cpp': No such file or directory
1>imgui_impl_win32.cpp
1>c1xx : fatal error C1083: Cannot open source file: 'Sourceimguiimgui_impl_win32.cpp': No such file or directory
1>imgui_widgets.cpp
1>c1xx : fatal error C1083: Cannot open source file: 'Sourceimguiimgui_widgets.cpp': No such file or directory
Is there any way to solve this?
asked Apr 14, 2020 at 3:45
4
Figured it out! Turns out trying to add imgui as an additional library in an attempt to workaround another problem leaves VS thinking it exists on your source even after removing everything. Experimenting sometimes creates unexpected problems.
answered Apr 14, 2020 at 5:32
JulkJulk
1697 bronze badges
Had the same problem following Cherno’s tutorial when I downloaded the wrong version of imgui. Already having included files into the build but then deleting from file explorer caused my error. I just made phony empty files of the same name in a different folder and then just transferred them into the imgui folder to trick VS, then rebuilt. Worked fine afterwards.
answered Aug 12, 2021 at 3:31
Hello guy, i need some help with this error. I’m really not good with linker errors so i never know what to do. i hope someone can bring me a light.
Severity Code Description Project File Line Suppression State Error LNK2019 unresolved external symbol "struct ImGuiIO & __cdecl ImGui::GetIO(void)" (?GetIO@ImGui@@YAAAUImGuiIO@@XZ) referenced in function "bool __cdecl ImGui_ImplDX9_CreateFontsTexture(void)" (?ImGui_ImplDX9_CreateFontsTexture@@YA_NXZ) CS_GO C:UsersLDocumentsVisual Studio 2015ProjectsCS_GOCS_GOimgui_impl_dx9.obj 1 Error LNK2019 unresolved external symbol "void __cdecl ImGui::NewFrame(void)" (?NewFrame@ImGui@@YAXXZ) referenced in function "void __cdecl ImGui_ImplDX9_NewFrame(void)" (?ImGui_ImplDX9_NewFrame@@YAXXZ) CS_GO C:UsersLDocumentsVisual Studio 2015ProjectsCS_GOCS_GOimgui_impl_dx9.obj 1 Error LNK2019 unresolved external symbol "void __cdecl ImGui::Shutdown(void)" (?Shutdown@ImGui@@YAXXZ) referenced in function "void __cdecl ImGui_ImplDX9_Shutdown(void)" (?ImGui_ImplDX9_Shutdown@@YAXXZ) CS_GO C:UsersLDocumentsVisual Studio 2015ProjectsCS_GOCS_GOimgui_impl_dx9.obj 1 Error LNK2019 unresolved external symbol "public: void __thiscall ImGuiIO::AddInputCharacter(unsigned short)" (?AddInputCharacter@ImGuiIO@@QAEXG@Z) referenced in function "long __cdecl ImGui_ImplDX9_WndProcHandler(struct HWND__ *,unsigned int,unsigned int,long)" (?ImGui_ImplDX9_WndProcHandler@@YAJPAUHWND__@@IIJ@Z) CS_GO C:UsersLDocumentsVisual Studio 2015ProjectsCS_GOCS_GOimgui_impl_dx9.obj 1 Error LNK2019 unresolved external symbol "public: void __thiscall ImFontAtlas::GetTexDataAsRGBA32(unsigned char * *,int *,int *,int *)" (?GetTexDataAsRGBA32@ImFontAtlas@@QAEXPAPAEPAH11@Z) referenced in function "bool __cdecl ImGui_ImplDX9_CreateFontsTexture(void)" (?ImGui_ImplDX9_CreateFontsTexture@@YA_NXZ) CS_GO C:UsersLDocumentsVisual Studio 2015ProjectsCS_GOCS_GOimgui_impl_dx9.obj 1
imgui_impl_dx9.h
#include <imgui-masterimgui.h> #include <d3d9.h> #define DIRECTINPUT_VERSION 0x0800 #include <dinput.h> IMGUI_API bool ImGui_ImplDX9_Init(void* hwnd, IDirect3DDevice9* device); IMGUI_API void ImGui_ImplDX9_Shutdown(); IMGUI_API void ImGui_ImplDX9_NewFrame(); IMGUI_API void ImGui_ImplDX9_InvalidateDeviceObjects(); IMGUI_API bool ImGui_ImplDX9_CreateDeviceObjects();
imgui_impl_dx9.cpp
// You can copy and use unmodified imgui_impl_* files in your project. See main.cpp for an example of using this. // If you use this binding you'll need to call 4 functions: ImGui_ImplXXXX_Init(), ImGui_ImplXXXX_NewFrame(), ImGui::Render() and ImGui_ImplXXXX_Shutdown(). // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. // https://github.com/ocornut/imgui #include "imgui_impl_dx9.h" // Data static HWND g_hWnd = 0; static INT64 g_Time = 0; static INT64 g_TicksPerSecond = 0; static LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; static LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL; static LPDIRECT3DINDEXBUFFER9 g_pIB = NULL; static LPDIRECT3DTEXTURE9 g_FontTexture = NULL; static int g_VertexBufferSize = 5000, g_IndexBufferSize = 10000; struct CUSTOMVERTEX { float pos[3]; D3DCOLOR col; float uv[2]; }; #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1) // This is the main rendering function that you have to implement and provide to ImGui (via setting up 'RenderDrawListsFn' in the ImGuiIO structure) // If text or lines are blurry when integrating ImGui in your engine: // - in your Render function, try translating your projection matrix by (0.5f,0.5f) or (0.375f,0.375f) void ImGui_ImplDX9_RenderDrawLists(ImDrawData* draw_data) { // Avoid rendering when minimized ImGuiIO& io = ImGui::GetIO(); if (io.DisplaySize.x <= 0.0f || io.DisplaySize.y <= 0.0f) return; // Create and grow buffers if needed if (!g_pVB || g_VertexBufferSize < draw_data->TotalVtxCount) { if (g_pVB) { g_pVB->Release(); g_pVB = NULL; } g_VertexBufferSize = draw_data->TotalVtxCount + 5000; if (g_pd3dDevice->CreateVertexBuffer(g_VertexBufferSize * sizeof(CUSTOMVERTEX), D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL) < 0) return; } if (!g_pIB || g_IndexBufferSize < draw_data->TotalIdxCount) { if (g_pIB) { g_pIB->Release(); g_pIB = NULL; } g_IndexBufferSize = draw_data->TotalIdxCount + 10000; if (g_pd3dDevice->CreateIndexBuffer(g_IndexBufferSize * sizeof(ImDrawIdx), D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, sizeof(ImDrawIdx) == 2 ? D3DFMT_INDEX16 : D3DFMT_INDEX32, D3DPOOL_DEFAULT, &g_pIB, NULL) < 0) return; } // Backup the DX9 state IDirect3DStateBlock9* d3d9_state_block = NULL; if (g_pd3dDevice->CreateStateBlock(D3DSBT_ALL, &d3d9_state_block) < 0) return; // Copy and convert all vertices into a single contiguous buffer CUSTOMVERTEX* vtx_dst; ImDrawIdx* idx_dst; if (g_pVB->Lock(0, (UINT)(draw_data->TotalVtxCount * sizeof(CUSTOMVERTEX)), (void**)&vtx_dst, D3DLOCK_DISCARD) < 0) return; if (g_pIB->Lock(0, (UINT)(draw_data->TotalIdxCount * sizeof(ImDrawIdx)), (void**)&idx_dst, D3DLOCK_DISCARD) < 0) return; for (int n = 0; n < draw_data->CmdListsCount; n++) { const ImDrawList* cmd_list = draw_data->CmdLists[n]; const ImDrawVert* vtx_src = cmd_list->VtxBuffer.Data; for (int i = 0; i < cmd_list->VtxBuffer.Size; i++) { vtx_dst->pos[0] = vtx_src->pos.x; vtx_dst->pos[1] = vtx_src->pos.y; vtx_dst->pos[2] = 0.0f; vtx_dst->col = (vtx_src->col & 0xFF00FF00) | ((vtx_src->col & 0xFF0000)>>16) | ((vtx_src->col & 0xFF) << 16); // RGBA --> ARGB for DirectX9 vtx_dst->uv[0] = vtx_src->uv.x; vtx_dst->uv[1] = vtx_src->uv.y; vtx_dst++; vtx_src++; } memcpy(idx_dst, cmd_list->IdxBuffer.Data, cmd_list->IdxBuffer.Size * sizeof(ImDrawIdx)); idx_dst += cmd_list->IdxBuffer.Size; } g_pVB->Unlock(); g_pIB->Unlock(); g_pd3dDevice->SetStreamSource(0, g_pVB, 0, sizeof(CUSTOMVERTEX)); g_pd3dDevice->SetIndices(g_pIB); g_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX); // Setup viewport D3DVIEWPORT9 vp; vp.X = vp.Y = 0; vp.Width = (DWORD)io.DisplaySize.x; vp.Height = (DWORD)io.DisplaySize.y; vp.MinZ = 0.0f; vp.MaxZ = 1.0f; g_pd3dDevice->SetViewport(&vp); // Setup render state: fixed-pipeline, alpha-blending, no face culling, no depth testing g_pd3dDevice->SetPixelShader(NULL); g_pd3dDevice->SetVertexShader(NULL); g_pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); g_pd3dDevice->SetRenderState(D3DRS_LIGHTING, false); g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, false); g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, true); g_pd3dDevice->SetRenderState(D3DRS_ALPHATESTENABLE, false); g_pd3dDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD); g_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); g_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); g_pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, true); g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE); g_pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); g_pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); // Setup orthographic projection matrix // Being agnostic of whether <d3dx9.h> or <DirectXMath.h> can be used, we aren't relying on D3DXMatrixIdentity()/D3DXMatrixOrthoOffCenterLH() or DirectX::XMMatrixIdentity()/DirectX::XMMatrixOrthographicOffCenterLH() { const float L = 0.5f, R = io.DisplaySize.x+0.5f, T = 0.5f, B = io.DisplaySize.y+0.5f; D3DMATRIX mat_identity = { { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f } }; D3DMATRIX mat_projection = { 2.0f/(R-L), 0.0f, 0.0f, 0.0f, 0.0f, 2.0f/(T-B), 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, (L+R)/(L-R), (T+B)/(B-T), 0.5f, 1.0f, }; g_pd3dDevice->SetTransform(D3DTS_WORLD, &mat_identity); g_pd3dDevice->SetTransform(D3DTS_VIEW, &mat_identity); g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &mat_projection); } // Render command lists int vtx_offset = 0; int idx_offset = 0; for (int n = 0; n < draw_data->CmdListsCount; n++) { const ImDrawList* cmd_list = draw_data->CmdLists[n]; for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++) { const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i]; if (pcmd->UserCallback) { pcmd->UserCallback(cmd_list, pcmd); } else { const RECT r = { (LONG)pcmd->ClipRect.x, (LONG)pcmd->ClipRect.y, (LONG)pcmd->ClipRect.z, (LONG)pcmd->ClipRect.w }; g_pd3dDevice->SetTexture(0, (LPDIRECT3DTEXTURE9)pcmd->TextureId); g_pd3dDevice->SetScissorRect(&r); g_pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, vtx_offset, 0, (UINT)cmd_list->VtxBuffer.Size, idx_offset, pcmd->ElemCount/3); } idx_offset += pcmd->ElemCount; } vtx_offset += cmd_list->VtxBuffer.Size; } // Restore the DX9 state d3d9_state_block->Apply(); d3d9_state_block->Release(); } IMGUI_API LRESULT ImGui_ImplDX9_WndProcHandler(HWND, UINT msg, WPARAM wParam, LPARAM lParam) { ImGuiIO& io = ImGui::GetIO(); switch (msg) { case WM_LBUTTONDOWN: io.MouseDown[0] = true; return true; case WM_LBUTTONUP: io.MouseDown[0] = false; return true; case WM_RBUTTONDOWN: io.MouseDown[1] = true; return true; case WM_RBUTTONUP: io.MouseDown[1] = false; return true; case WM_MBUTTONDOWN: io.MouseDown[2] = true; return true; case WM_MBUTTONUP: io.MouseDown[2] = false; return true; case WM_MOUSEWHEEL: io.MouseWheel += GET_WHEEL_DELTA_WPARAM(wParam) > 0 ? +1.0f : -1.0f; return true; case WM_MOUSEMOVE: io.MousePos.x = (signed short)(lParam); io.MousePos.y = (signed short)(lParam >> 16); return true; case WM_KEYDOWN: if (wParam < 256) io.KeysDown[wParam] = 1; return true; case WM_KEYUP: if (wParam < 256) io.KeysDown[wParam] = 0; return true; case WM_CHAR: // You can also use ToAscii()+GetKeyboardState() to retrieve characters. if (wParam > 0 && wParam < 0x10000) io.AddInputCharacter((unsigned short)wParam); return true; } return 0; } bool ImGui_ImplDX9_Init(void* hwnd, IDirect3DDevice9* device) { g_hWnd = (HWND)hwnd; g_pd3dDevice = device; if (!QueryPerformanceFrequency((LARGE_INTEGER *)&g_TicksPerSecond)) return false; if (!QueryPerformanceCounter((LARGE_INTEGER *)&g_Time)) return false; ImGuiIO& io = ImGui::GetIO(); io.KeyMap[ImGuiKey_Tab] = VK_TAB; // Keyboard mapping. ImGui will use those indices to peek into the io.KeyDown[] array that we will update during the application lifetime. io.KeyMap[ImGuiKey_LeftArrow] = VK_LEFT; io.KeyMap[ImGuiKey_RightArrow] = VK_RIGHT; io.KeyMap[ImGuiKey_UpArrow] = VK_UP; io.KeyMap[ImGuiKey_DownArrow] = VK_DOWN; io.KeyMap[ImGuiKey_PageUp] = VK_PRIOR; io.KeyMap[ImGuiKey_PageDown] = VK_NEXT; io.KeyMap[ImGuiKey_Home] = VK_HOME; io.KeyMap[ImGuiKey_End] = VK_END; io.KeyMap[ImGuiKey_Delete] = VK_DELETE; io.KeyMap[ImGuiKey_Backspace] = VK_BACK; io.KeyMap[ImGuiKey_Enter] = VK_RETURN; io.KeyMap[ImGuiKey_Escape] = VK_ESCAPE; io.KeyMap[ImGuiKey_A] = 'A'; io.KeyMap[ImGuiKey_C] = 'C'; io.KeyMap[ImGuiKey_V] = 'V'; io.KeyMap[ImGuiKey_X] = 'X'; io.KeyMap[ImGuiKey_Y] = 'Y'; io.KeyMap[ImGuiKey_Z] = 'Z'; io.RenderDrawListsFn = ImGui_ImplDX9_RenderDrawLists; // Alternatively you can set this to NULL and call ImGui::GetDrawData() after ImGui::Render() to get the same ImDrawData pointer. io.ImeWindowHandle = g_hWnd; return true; } void ImGui_ImplDX9_Shutdown() { ImGui_ImplDX9_InvalidateDeviceObjects(); ImGui::Shutdown(); g_pd3dDevice = NULL; g_hWnd = 0; } static bool ImGui_ImplDX9_CreateFontsTexture() { // Build texture atlas ImGuiIO& io = ImGui::GetIO(); unsigned char* pixels; int width, height, bytes_per_pixel; io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height, &bytes_per_pixel); // Upload texture to graphics system g_FontTexture = NULL; if (g_pd3dDevice->CreateTexture(width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &g_FontTexture, NULL) < 0) return false; D3DLOCKED_RECT tex_locked_rect; if (g_FontTexture->LockRect(0, &tex_locked_rect, NULL, 0) != D3D_OK) return false; for (int y = 0; y < height; y++) memcpy((unsigned char *)tex_locked_rect.pBits + tex_locked_rect.Pitch * y, pixels + (width * bytes_per_pixel) * y, (width * bytes_per_pixel)); g_FontTexture->UnlockRect(0); // Store our identifier io.Fonts->TexID = (void *)g_FontTexture; return true; } bool ImGui_ImplDX9_CreateDeviceObjects() { if (!g_pd3dDevice) return false; if (!ImGui_ImplDX9_CreateFontsTexture()) return false; return true; } void ImGui_ImplDX9_InvalidateDeviceObjects() { if (!g_pd3dDevice) return; if (g_pVB) { g_pVB->Release(); g_pVB = NULL; } if (g_pIB) { g_pIB->Release(); g_pIB = NULL; } if (LPDIRECT3DTEXTURE9 tex = (LPDIRECT3DTEXTURE9)ImGui::GetIO().Fonts->TexID) { tex->Release(); ImGui::GetIO().Fonts->TexID = 0; } g_FontTexture = NULL; } void ImGui_ImplDX9_NewFrame() { if (!g_FontTexture) ImGui_ImplDX9_CreateDeviceObjects(); ImGuiIO& io = ImGui::GetIO(); // Setup display size (every frame to accommodate for window resizing) RECT rect; GetClientRect(g_hWnd, &rect); io.DisplaySize = ImVec2((float)(rect.right - rect.left), (float)(rect.bottom - rect.top)); // Setup time step INT64 current_time; QueryPerformanceCounter((LARGE_INTEGER *)¤t_time); io.DeltaTime = (float)(current_time - g_Time) / g_TicksPerSecond; g_Time = current_time; // Read keyboard modifiers inputs io.KeyCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0; io.KeyShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0; io.KeyAlt = (GetKeyState(VK_MENU) & 0x8000) != 0; io.KeySuper = false; // io.KeysDown : filled by WM_KEYDOWN/WM_KEYUP events // io.MousePos : filled by WM_MOUSEMOVE events // io.MouseDown : filled by WM_*BUTTON* events // io.MouseWheel : filled by WM_MOUSEWHEEL events // Hide OS mouse cursor if ImGui is drawing it if (io.MouseDrawCursor) SetCursor(NULL); // Start the frame ImGui::NewFrame(); }
Hello guy, i need some help with this error. I’m really not good with linker errors so i never know what to do. i hope someone can bring me a light.
Severity Code Description Project File Line Suppression State Error LNK2019 unresolved external symbol "struct ImGuiIO & __cdecl ImGui::GetIO(void)" (?GetIO@ImGui@@YAAAUImGuiIO@@XZ) referenced in function "bool __cdecl ImGui_ImplDX9_CreateFontsTexture(void)" (?ImGui_ImplDX9_CreateFontsTexture@@YA_NXZ) CS_GO C:UsersLDocumentsVisual Studio 2015ProjectsCS_GOCS_GOimgui_impl_dx9.obj 1 Error LNK2019 unresolved external symbol "void __cdecl ImGui::NewFrame(void)" (?NewFrame@ImGui@@YAXXZ) referenced in function "void __cdecl ImGui_ImplDX9_NewFrame(void)" (?ImGui_ImplDX9_NewFrame@@YAXXZ) CS_GO C:UsersLDocumentsVisual Studio 2015ProjectsCS_GOCS_GOimgui_impl_dx9.obj 1 Error LNK2019 unresolved external symbol "void __cdecl ImGui::Shutdown(void)" (?Shutdown@ImGui@@YAXXZ) referenced in function "void __cdecl ImGui_ImplDX9_Shutdown(void)" (?ImGui_ImplDX9_Shutdown@@YAXXZ) CS_GO C:UsersLDocumentsVisual Studio 2015ProjectsCS_GOCS_GOimgui_impl_dx9.obj 1 Error LNK2019 unresolved external symbol "public: void __thiscall ImGuiIO::AddInputCharacter(unsigned short)" (?AddInputCharacter@ImGuiIO@@QAEXG@Z) referenced in function "long __cdecl ImGui_ImplDX9_WndProcHandler(struct HWND__ *,unsigned int,unsigned int,long)" (?ImGui_ImplDX9_WndProcHandler@@YAJPAUHWND__@@IIJ@Z) CS_GO C:UsersLDocumentsVisual Studio 2015ProjectsCS_GOCS_GOimgui_impl_dx9.obj 1 Error LNK2019 unresolved external symbol "public: void __thiscall ImFontAtlas::GetTexDataAsRGBA32(unsigned char * *,int *,int *,int *)" (?GetTexDataAsRGBA32@ImFontAtlas@@QAEXPAPAEPAH11@Z) referenced in function "bool __cdecl ImGui_ImplDX9_CreateFontsTexture(void)" (?ImGui_ImplDX9_CreateFontsTexture@@YA_NXZ) CS_GO C:UsersLDocumentsVisual Studio 2015ProjectsCS_GOCS_GOimgui_impl_dx9.obj 1
imgui_impl_dx9.h
#include <imgui-masterimgui.h> #include <d3d9.h> #define DIRECTINPUT_VERSION 0x0800 #include <dinput.h> IMGUI_API bool ImGui_ImplDX9_Init(void* hwnd, IDirect3DDevice9* device); IMGUI_API void ImGui_ImplDX9_Shutdown(); IMGUI_API void ImGui_ImplDX9_NewFrame(); IMGUI_API void ImGui_ImplDX9_InvalidateDeviceObjects(); IMGUI_API bool ImGui_ImplDX9_CreateDeviceObjects();
imgui_impl_dx9.cpp
// You can copy and use unmodified imgui_impl_* files in your project. See main.cpp for an example of using this. // If you use this binding you'll need to call 4 functions: ImGui_ImplXXXX_Init(), ImGui_ImplXXXX_NewFrame(), ImGui::Render() and ImGui_ImplXXXX_Shutdown(). // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. // https://github.com/ocornut/imgui #include "imgui_impl_dx9.h" // Data static HWND g_hWnd = 0; static INT64 g_Time = 0; static INT64 g_TicksPerSecond = 0; static LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; static LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL; static LPDIRECT3DINDEXBUFFER9 g_pIB = NULL; static LPDIRECT3DTEXTURE9 g_FontTexture = NULL; static int g_VertexBufferSize = 5000, g_IndexBufferSize = 10000; struct CUSTOMVERTEX { float pos[3]; D3DCOLOR col; float uv[2]; }; #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1) // This is the main rendering function that you have to implement and provide to ImGui (via setting up 'RenderDrawListsFn' in the ImGuiIO structure) // If text or lines are blurry when integrating ImGui in your engine: // - in your Render function, try translating your projection matrix by (0.5f,0.5f) or (0.375f,0.375f) void ImGui_ImplDX9_RenderDrawLists(ImDrawData* draw_data) { // Avoid rendering when minimized ImGuiIO& io = ImGui::GetIO(); if (io.DisplaySize.x <= 0.0f || io.DisplaySize.y <= 0.0f) return; // Create and grow buffers if needed if (!g_pVB || g_VertexBufferSize < draw_data->TotalVtxCount) { if (g_pVB) { g_pVB->Release(); g_pVB = NULL; } g_VertexBufferSize = draw_data->TotalVtxCount + 5000; if (g_pd3dDevice->CreateVertexBuffer(g_VertexBufferSize * sizeof(CUSTOMVERTEX), D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL) < 0) return; } if (!g_pIB || g_IndexBufferSize < draw_data->TotalIdxCount) { if (g_pIB) { g_pIB->Release(); g_pIB = NULL; } g_IndexBufferSize = draw_data->TotalIdxCount + 10000; if (g_pd3dDevice->CreateIndexBuffer(g_IndexBufferSize * sizeof(ImDrawIdx), D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, sizeof(ImDrawIdx) == 2 ? D3DFMT_INDEX16 : D3DFMT_INDEX32, D3DPOOL_DEFAULT, &g_pIB, NULL) < 0) return; } // Backup the DX9 state IDirect3DStateBlock9* d3d9_state_block = NULL; if (g_pd3dDevice->CreateStateBlock(D3DSBT_ALL, &d3d9_state_block) < 0) return; // Copy and convert all vertices into a single contiguous buffer CUSTOMVERTEX* vtx_dst; ImDrawIdx* idx_dst; if (g_pVB->Lock(0, (UINT)(draw_data->TotalVtxCount * sizeof(CUSTOMVERTEX)), (void**)&vtx_dst, D3DLOCK_DISCARD) < 0) return; if (g_pIB->Lock(0, (UINT)(draw_data->TotalIdxCount * sizeof(ImDrawIdx)), (void**)&idx_dst, D3DLOCK_DISCARD) < 0) return; for (int n = 0; n < draw_data->CmdListsCount; n++) { const ImDrawList* cmd_list = draw_data->CmdLists[n]; const ImDrawVert* vtx_src = cmd_list->VtxBuffer.Data; for (int i = 0; i < cmd_list->VtxBuffer.Size; i++) { vtx_dst->pos[0] = vtx_src->pos.x; vtx_dst->pos[1] = vtx_src->pos.y; vtx_dst->pos[2] = 0.0f; vtx_dst->col = (vtx_src->col & 0xFF00FF00) | ((vtx_src->col & 0xFF0000)>>16) | ((vtx_src->col & 0xFF) << 16); // RGBA --> ARGB for DirectX9 vtx_dst->uv[0] = vtx_src->uv.x; vtx_dst->uv[1] = vtx_src->uv.y; vtx_dst++; vtx_src++; } memcpy(idx_dst, cmd_list->IdxBuffer.Data, cmd_list->IdxBuffer.Size * sizeof(ImDrawIdx)); idx_dst += cmd_list->IdxBuffer.Size; } g_pVB->Unlock(); g_pIB->Unlock(); g_pd3dDevice->SetStreamSource(0, g_pVB, 0, sizeof(CUSTOMVERTEX)); g_pd3dDevice->SetIndices(g_pIB); g_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX); // Setup viewport D3DVIEWPORT9 vp; vp.X = vp.Y = 0; vp.Width = (DWORD)io.DisplaySize.x; vp.Height = (DWORD)io.DisplaySize.y; vp.MinZ = 0.0f; vp.MaxZ = 1.0f; g_pd3dDevice->SetViewport(&vp); // Setup render state: fixed-pipeline, alpha-blending, no face culling, no depth testing g_pd3dDevice->SetPixelShader(NULL); g_pd3dDevice->SetVertexShader(NULL); g_pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); g_pd3dDevice->SetRenderState(D3DRS_LIGHTING, false); g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, false); g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, true); g_pd3dDevice->SetRenderState(D3DRS_ALPHATESTENABLE, false); g_pd3dDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD); g_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); g_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); g_pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, true); g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE); g_pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); g_pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); // Setup orthographic projection matrix // Being agnostic of whether <d3dx9.h> or <DirectXMath.h> can be used, we aren't relying on D3DXMatrixIdentity()/D3DXMatrixOrthoOffCenterLH() or DirectX::XMMatrixIdentity()/DirectX::XMMatrixOrthographicOffCenterLH() { const float L = 0.5f, R = io.DisplaySize.x+0.5f, T = 0.5f, B = io.DisplaySize.y+0.5f; D3DMATRIX mat_identity = { { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f } }; D3DMATRIX mat_projection = { 2.0f/(R-L), 0.0f, 0.0f, 0.0f, 0.0f, 2.0f/(T-B), 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, (L+R)/(L-R), (T+B)/(B-T), 0.5f, 1.0f, }; g_pd3dDevice->SetTransform(D3DTS_WORLD, &mat_identity); g_pd3dDevice->SetTransform(D3DTS_VIEW, &mat_identity); g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &mat_projection); } // Render command lists int vtx_offset = 0; int idx_offset = 0; for (int n = 0; n < draw_data->CmdListsCount; n++) { const ImDrawList* cmd_list = draw_data->CmdLists[n]; for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++) { const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i]; if (pcmd->UserCallback) { pcmd->UserCallback(cmd_list, pcmd); } else { const RECT r = { (LONG)pcmd->ClipRect.x, (LONG)pcmd->ClipRect.y, (LONG)pcmd->ClipRect.z, (LONG)pcmd->ClipRect.w }; g_pd3dDevice->SetTexture(0, (LPDIRECT3DTEXTURE9)pcmd->TextureId); g_pd3dDevice->SetScissorRect(&r); g_pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, vtx_offset, 0, (UINT)cmd_list->VtxBuffer.Size, idx_offset, pcmd->ElemCount/3); } idx_offset += pcmd->ElemCount; } vtx_offset += cmd_list->VtxBuffer.Size; } // Restore the DX9 state d3d9_state_block->Apply(); d3d9_state_block->Release(); } IMGUI_API LRESULT ImGui_ImplDX9_WndProcHandler(HWND, UINT msg, WPARAM wParam, LPARAM lParam) { ImGuiIO& io = ImGui::GetIO(); switch (msg) { case WM_LBUTTONDOWN: io.MouseDown[0] = true; return true; case WM_LBUTTONUP: io.MouseDown[0] = false; return true; case WM_RBUTTONDOWN: io.MouseDown[1] = true; return true; case WM_RBUTTONUP: io.MouseDown[1] = false; return true; case WM_MBUTTONDOWN: io.MouseDown[2] = true; return true; case WM_MBUTTONUP: io.MouseDown[2] = false; return true; case WM_MOUSEWHEEL: io.MouseWheel += GET_WHEEL_DELTA_WPARAM(wParam) > 0 ? +1.0f : -1.0f; return true; case WM_MOUSEMOVE: io.MousePos.x = (signed short)(lParam); io.MousePos.y = (signed short)(lParam >> 16); return true; case WM_KEYDOWN: if (wParam < 256) io.KeysDown[wParam] = 1; return true; case WM_KEYUP: if (wParam < 256) io.KeysDown[wParam] = 0; return true; case WM_CHAR: // You can also use ToAscii()+GetKeyboardState() to retrieve characters. if (wParam > 0 && wParam < 0x10000) io.AddInputCharacter((unsigned short)wParam); return true; } return 0; } bool ImGui_ImplDX9_Init(void* hwnd, IDirect3DDevice9* device) { g_hWnd = (HWND)hwnd; g_pd3dDevice = device; if (!QueryPerformanceFrequency((LARGE_INTEGER *)&g_TicksPerSecond)) return false; if (!QueryPerformanceCounter((LARGE_INTEGER *)&g_Time)) return false; ImGuiIO& io = ImGui::GetIO(); io.KeyMap[ImGuiKey_Tab] = VK_TAB; // Keyboard mapping. ImGui will use those indices to peek into the io.KeyDown[] array that we will update during the application lifetime. io.KeyMap[ImGuiKey_LeftArrow] = VK_LEFT; io.KeyMap[ImGuiKey_RightArrow] = VK_RIGHT; io.KeyMap[ImGuiKey_UpArrow] = VK_UP; io.KeyMap[ImGuiKey_DownArrow] = VK_DOWN; io.KeyMap[ImGuiKey_PageUp] = VK_PRIOR; io.KeyMap[ImGuiKey_PageDown] = VK_NEXT; io.KeyMap[ImGuiKey_Home] = VK_HOME; io.KeyMap[ImGuiKey_End] = VK_END; io.KeyMap[ImGuiKey_Delete] = VK_DELETE; io.KeyMap[ImGuiKey_Backspace] = VK_BACK; io.KeyMap[ImGuiKey_Enter] = VK_RETURN; io.KeyMap[ImGuiKey_Escape] = VK_ESCAPE; io.KeyMap[ImGuiKey_A] = 'A'; io.KeyMap[ImGuiKey_C] = 'C'; io.KeyMap[ImGuiKey_V] = 'V'; io.KeyMap[ImGuiKey_X] = 'X'; io.KeyMap[ImGuiKey_Y] = 'Y'; io.KeyMap[ImGuiKey_Z] = 'Z'; io.RenderDrawListsFn = ImGui_ImplDX9_RenderDrawLists; // Alternatively you can set this to NULL and call ImGui::GetDrawData() after ImGui::Render() to get the same ImDrawData pointer. io.ImeWindowHandle = g_hWnd; return true; } void ImGui_ImplDX9_Shutdown() { ImGui_ImplDX9_InvalidateDeviceObjects(); ImGui::Shutdown(); g_pd3dDevice = NULL; g_hWnd = 0; } static bool ImGui_ImplDX9_CreateFontsTexture() { // Build texture atlas ImGuiIO& io = ImGui::GetIO(); unsigned char* pixels; int width, height, bytes_per_pixel; io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height, &bytes_per_pixel); // Upload texture to graphics system g_FontTexture = NULL; if (g_pd3dDevice->CreateTexture(width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &g_FontTexture, NULL) < 0) return false; D3DLOCKED_RECT tex_locked_rect; if (g_FontTexture->LockRect(0, &tex_locked_rect, NULL, 0) != D3D_OK) return false; for (int y = 0; y < height; y++) memcpy((unsigned char *)tex_locked_rect.pBits + tex_locked_rect.Pitch * y, pixels + (width * bytes_per_pixel) * y, (width * bytes_per_pixel)); g_FontTexture->UnlockRect(0); // Store our identifier io.Fonts->TexID = (void *)g_FontTexture; return true; } bool ImGui_ImplDX9_CreateDeviceObjects() { if (!g_pd3dDevice) return false; if (!ImGui_ImplDX9_CreateFontsTexture()) return false; return true; } void ImGui_ImplDX9_InvalidateDeviceObjects() { if (!g_pd3dDevice) return; if (g_pVB) { g_pVB->Release(); g_pVB = NULL; } if (g_pIB) { g_pIB->Release(); g_pIB = NULL; } if (LPDIRECT3DTEXTURE9 tex = (LPDIRECT3DTEXTURE9)ImGui::GetIO().Fonts->TexID) { tex->Release(); ImGui::GetIO().Fonts->TexID = 0; } g_FontTexture = NULL; } void ImGui_ImplDX9_NewFrame() { if (!g_FontTexture) ImGui_ImplDX9_CreateDeviceObjects(); ImGuiIO& io = ImGui::GetIO(); // Setup display size (every frame to accommodate for window resizing) RECT rect; GetClientRect(g_hWnd, &rect); io.DisplaySize = ImVec2((float)(rect.right - rect.left), (float)(rect.bottom - rect.top)); // Setup time step INT64 current_time; QueryPerformanceCounter((LARGE_INTEGER *)¤t_time); io.DeltaTime = (float)(current_time - g_Time) / g_TicksPerSecond; g_Time = current_time; // Read keyboard modifiers inputs io.KeyCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0; io.KeyShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0; io.KeyAlt = (GetKeyState(VK_MENU) & 0x8000) != 0; io.KeySuper = false; // io.KeysDown : filled by WM_KEYDOWN/WM_KEYUP events // io.MousePos : filled by WM_MOUSEMOVE events // io.MouseDown : filled by WM_*BUTTON* events // io.MouseWheel : filled by WM_MOUSEWHEEL events // Hide OS mouse cursor if ImGui is drawing it if (io.MouseDrawCursor) SetCursor(NULL); // Start the frame ImGui::NewFrame(); }
Так как реального руководства по настройке ImGui & SDL2 не существует, я пришел сюда, чтобы найти ответы.
Мне просто нужно вставить файл ImGui в папку include, чтобы правильно его настроить? По крайней мере, так говорит файл readme ImGui.
Когда я пробую это:
ImGui::Begin("test");
У меня такая ошибка:
undefined reference to `ImGui::Begin(char const*, bool*, int)
Блок кода автоматически заполняет меня функциями ImGui, когда я начинаю писать ‘i’. Также, когда я делаю #include другие файлы (ImGui_draw и т. Д.), У меня возникают только проблемы с переопределением.
=> Вот почему мой вопрос немного отличается от следующего вопроса, на который уже был дан ответ:
What is an undefined reference/unresolved external symbol error and how do I fix it?
Поэтому, пожалуйста, не закрывайте этот вопрос. Я ищу решение от 2 дня, и вопрос здесь — мое единственное оставленное решение. Мне придется отказаться от ImGui, если этот вопрос будет закрыт .. Я действительно не знаю.
Может ли эта ошибка быть из-за конфликта с opengl SDL2? Но в этом случае, не должно ли просто аварийное завершение программы?
РЕДАКТИРОВАТЬ: Теперь эта ошибка решена ( Я раньше работал с IDE, которая сама включала файлы в мою папку включения, я не знал, что блок кода не сделал ) , У меня запускается моя программа, но ничего, связанного с ImGui, не происходит (как и ожидалось, я еще не понял, как смешивать SDL2 и ImGui), и теперь возникает другая ошибка, когда я закрываю окно SDL2:
Программа аварийно завершает работу и отображает в консоли следующее:
Assertion failed: g.Initialized, file C:(...)imgui.cpp, line 3882
Несколько случайных тестов: если я использую ImGui перед моим основным циклом, он падает там. То же самое внутри цикла.
2 ответа
Лучший ответ
Мне просто нужно вставить файл ImGui в папку include, чтобы правильно его настроить?
Нет. Заголовочные файлы необходимы вашему приложению, чтобы увидеть, какие символы существуют для правильной компиляции. Но во время связывания эти символы действительно должны присутствовать, и добавление одного заголовочного файла не приведет к их добавлению. Вам нужно перенести все исходные файлы (файлы cpp и, возможно, соответствующие им заголовочные файлы) в ваше приложение и скомпилировать их все вместе.
Сборка приложения на C ++ состоит из двух основных этапов: компиляция и компоновка. Ваш путь к заголовку содержит всю информацию для стадии компиляции, но не для ссылок. Только фактические исходные файлы (которые не являются заголовочными файлами) могут содержать символы, необходимые для определения того, что объявлено в ваших заголовках. Если вы их тоже не добавите, то ваши символы не определены, что объясняет вашу ошибку.
Блок кода автоматически заполняет меня функциями ImGui, когда я начинаю писать «i».
Это потому, что вы включили заголовочный файл, который является частью процесса.
У меня только проблемы с переопределением.
И на всякий случай, если вы делаете это, не используйте #include
ни с какими файлами .cpp, только с заголовочными файлами. Если вы #include cpp файлы в более чем одном месте, вы определенно получите несколько ошибок определения, как вы указали.
2
johnbakers
17 Май 2017 в 09:42
Цитата из README imgui:
ImGui содержится в нескольких файлах, которые вы можете легко скопировать и скомпилировать в свое приложение / движок:
- imgui.cpp
- imgui.h
- imgui_demo.cpp
- imgui_draw.cpp
- imgui_internal.h
- imconfig.h (по умолчанию пусто, редактируется пользователем)
- stb_rect_pack.h
- stb_textedit.h
- stb_truetype.h
Так что вам нужен не только заголовок imgui.h
, вам нужны все эти файлы, заботясь о компиляции и компоновке файлов cpp
в ваш исполняемый файл.
0
Quentin
17 Май 2017 в 09:05