Imgui draw cpp ошибка

Hatiko


  • #2

Косяк в коде скрипта. Самоубийство самому искать ошибку в чужом коде не запуская игру. Обратись к автору.

MS.Corleone


  • #3

Косяк в коде скрипта. Самоубийство самому искать ошибку в чужом коде не запуская игру. Обратись к автору.

Проблема в том что у остальных то он работает…. Если бы была ошибка в коде то не работало бы у всех…

chapo


  • #4

Проблема в том что у остальных то он работает…. Если бы была ошибка в коде то не работало бы у всех…

Мб нет fAwesome

MS.Corleone


  • #5

Последнее редактирование:

MS.Corleone


  • #6

Чел. Это не то что ты предположил но твой вопрос (предположение) мне очень помогло.

MS.Corleone


  • #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 to stbrp_pack_rects in ImFontAtlasBuildWIthStbTruetype 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!

Hatiko

  • #2

Косяк в коде скрипта. Самоубийство самому искать ошибку в чужом коде не запуская игру. Обратись к автору.

MS.Corleone

  • #3

Косяк в коде скрипта. Самоубийство самому искать ошибку в чужом коде не запуская игру. Обратись к автору.

Проблема в том что у остальных то он работает…. Если бы была ошибка в коде то не работало бы у всех…

chapo

  • #4

Проблема в том что у остальных то он работает…. Если бы была ошибка в коде то не работало бы у всех…

Мб нет fAwesome

MS.Corleone

  • #5

Последнее редактирование: 12 Мар 2021

MS.Corleone

  • #6

Чел. Это не то что ты предположил но твой вопрос (предположение) мне очень помогло.

MS.Corleone

  • #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

Darwin

  • #2

Начни с ../
И после доберись до этого файла (подсказки должна вылезти)

  • #3

Начни с ../
И после доберись до этого файла (подсказки должна вылезти)

Сделал изменение везде выдавало такую ошибку, но теперь вот

Ошибка C1010 непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву «#include «stdafx.h»» в источник. Universal-ImGui-D11-Hook C:ProjectImGuiimgui_draw.cpp

  • #4

Причём, в этом же файле #include imgui.h нормально работает, а в другом пришлось путь указывать. Что может быть не так?
Пробую компилировать вот это

Darwin

  • #5

установи проект не как исполняемый файл а динамическая библиотека dll

Darwin

  • #6

#include «stdafx.h» — отключи предзаголовки файлов в настройках проекта

  • #7

#include «stdafx.h» — отключи предзаголовки файлов в настройках проекта

Всё сделал как сказал, теперь совсем другое

Darwin

  • #8

Сейчас скачаю сам посмотрю

  • #9

Сейчас скачаю сам посмотрю

Хорошо, спасибо

Darwin

  • #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 файлы в более чем одном месте, вы определенно получите несколько ошибок определения, как вы указали.

Dear ImGui

Loading

Содержание

  1. Что делать если крашит самп из за moonloader
  2. Вопрос Крашит с moonloader 026.
  3. Ошибка Moonloader.asi error line 9 после установки enb
  4. Вылетает SAMP при установке Moonloader или SampFuncs.
  5. Информация Поиск и решение ошибки в .lua скрипте
  6. Примеры ошибок​
  7. Информация MoonLoader — обсуждение
  8. Vitaliy ishkevych
  9. Вложения
  10. NARVELL
  11. randazzo
  12. werd0y45
  13. werd0y45
  14. werd0y45
  15. werd0y45
  16. vortex
  17. Самперы понимающие в 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

Источник

@CowNation

@coderboyisongithub

@ocornut

@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

@coderboyisongithub

@ocornut why imgui says it dont need to be build…it can be attached with project.Please update your log

@ocornut

@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.

@coderboyisongithub

@ocornut

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.

@coderboyisongithub

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..:(

@ocornut

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.

@coderboyisongithub

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

Julk's user avatar

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

Julk's user avatar

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

Austin Chan's user avatar

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 *)&current_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 *)&current_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

Понравилась статья? Поделить с друзьями:
  • Immergas ошибка 10 мигает что делать
  • Igfxrrus irc ошибка
  • Igfxem exe ошибка
  • Immergas nike star коды ошибок
  • Igdusc64 dll ошибка ведьмак 3