Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Run-Time Check Failure #0 ( РЕШЕНО )

sg
Премиум
Премиум
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
511
Реакции
336
День добрый, господа. Решил значит заняться переносом функции из lw, дабы создавать "кастом" чамсы, так как создавать их как файл и применять не очень то и целесообразно. И при выборе того самого созданного материала ловлю ошибку связанную с соглашениями о вызовах. Но пофиксить мне не удаётся, кто знает как решить ?

P.s. не стоит обращать внимания на #define, я уже просто попробовал в тупую воссоздать лв...
1639561590208.png


РЕШЕНИЕ:

Всё оказалось невероятно просто, как я и думал в общем, надо было настроить проект. Заходите в свойства проекта -> Свойства конфигурации -> Дополнительно -> Использовать отладочные библиотеки: нет.
 
Последнее редактирование:
Предполагаю, что проблема заключается в matname
CreateMaterial принимает в себя аргументы типа const char* во что собственно и преобразует метод c_str(). Так что не в этом проблема. Даже сейчас попробовал задать статическое имя, всё равно краш. ( функция используется лишь один раз, так что имею право )
 
Ну это я в общем-то понял уже. Остается вопрос как именно это пофиксить
так что ты ожидаешь если ты нихуя не показываешь? ну могу сказать что можешь пропастить ссдк2018 и проблема решится
 
так что ты ожидаешь если ты нихуя не показываешь? ну могу сказать что можешь пропастить ссдк2018 и проблема решится
Что ж ты сразу так начинаешь ? В чем проблема попросить, какие именно участки кода тебе нужны ? Я и без того расписал, откуда взял функцию, так что инфы предостаточно. Если так надо, могу кинуть метод CreateMaterial, если это так поможет ( к слову так же брал с того же самого лв )
 
Что ж ты сразу так начинаешь ? В чем проблема попросить, какие именно участки кода тебе нужны ? Я и без того расписал, откуда взял функцию, так что инфы предостаточно. Если так надо, могу кинуть метод CreateMaterial, если это так поможет ( к слову так же брал с того же самого лв )
показывай вфунк creatematerial и выведи sizeof(KeyValues)
 
C++:
Expand Collapse Copy
virtual IMaterial* CreateMaterial(const char* name, KeyValues* key)  {
    using Fn = IMaterial * (__thiscall*)(void*, const char*, KeyValues*);
    return CallVFunction< Fn >(this, 83)(this, name, key);
}
sizeof(KeyValues) = 36
EDIT: ну и вылезает исключение, вдруг важно будет:
1639570953138.png
 
C++:
Expand Collapse Copy
virtual IMaterial* CreateMaterial(const char* name, KeyValues* key)  {
    using Fn = IMaterial * (__thiscall*)(void*, const char*, KeyValues*);
    return CallVFunction< Fn >(this, 83)(this, name, key);
}
sizeof(KeyValues) = 36
тут все ок, а ты уверен что у тебя ошибка не в kv->loadfrombuffer?
 
тут все ок, а ты уверен что у тебя ошибка не в kv->loadfrombuffer?
Нет, адреса не нулевые и ошибка далеко не в них. Да даже если в тупую сравнивать, в том же лв, всё отлично работает. Потому я и создал эту тему, что вроде бы всё работает, но чет нихуя:kappa:
 
а зачем ты кстати юзаешь kv->Init("vertexunlit") если у тебя юзается loadfrombuffer?
Подожди. А ты где это вообще увидел ? Я в общем-то с keyValues ничего и не делаю, помимо кастов
 
Подожди. А ты где это вообще увидел ? Я в общем-то с keyValues ничего и не делаю, помимо кастов
1639572171500.png


ты вызываешь сначала Init(type), и потом loadfrombuffer, не думаю что это влияет на твою ошибку но все же это лишние вызовы
 
Посмотреть вложение 184462

ты вызываешь сначала Init(type), и потом loadfrombuffer, не думаю что это влияет на твою ошибку но все же это лишние вызовы
А, всё, понял. Хоть я и практически в тупую это спастил, но по идее эти методы нужны для правильной инициализации KeyValues, чтобы уже потом корректно создавать материал
 
Назад
Сверху Снизу