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

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

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

РЕШЕНИЕ:

Всё оказалось невероятно просто, как я и думал в общем, надо было настроить проект. Заходите в свойства проекта -> Свойства конфигурации -> Дополнительно -> Использовать отладочные библиотеки: нет.
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
Предполагаю, что проблема заключается в matname
CreateMaterial принимает в себя аргументы типа const char* во что собственно и преобразует метод c_str(). Так что не в этом проблема. Даже сейчас попробовал задать статическое имя, всё равно краш. ( функция используется лишь один раз, так что имею право )
 
bruh
Участник
Статус
Оффлайн
Регистрация
15 Апр 2017
Сообщения
1,299
Реакции[?]
365
Поинты[?]
0
может быть проблема в KeyValues, в функции create_material, больше инфы
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
bruh
Участник
Статус
Оффлайн
Регистрация
15 Апр 2017
Сообщения
1,299
Реакции[?]
365
Поинты[?]
0
Ну это я в общем-то понял уже. Остается вопрос как именно это пофиксить
так что ты ожидаешь если ты нихуя не показываешь? ну могу сказать что можешь пропастить ссдк2018 и проблема решится
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
так что ты ожидаешь если ты нихуя не показываешь? ну могу сказать что можешь пропастить ссдк2018 и проблема решится
Что ж ты сразу так начинаешь ? В чем проблема попросить, какие именно участки кода тебе нужны ? Я и без того расписал, откуда взял функцию, так что инфы предостаточно. Если так надо, могу кинуть метод CreateMaterial, если это так поможет ( к слову так же брал с того же самого лв )
 
bruh
Участник
Статус
Оффлайн
Регистрация
15 Апр 2017
Сообщения
1,299
Реакции[?]
365
Поинты[?]
0
Что ж ты сразу так начинаешь ? В чем проблема попросить, какие именно участки кода тебе нужны ? Я и без того расписал, откуда взял функцию, так что инфы предостаточно. Если так надо, могу кинуть метод CreateMaterial, если это так поможет ( к слову так же брал с того же самого лв )
показывай вфунк creatematerial и выведи sizeof(KeyValues)
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
C++:
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
 
bruh
Участник
Статус
Оффлайн
Регистрация
15 Апр 2017
Сообщения
1,299
Реакции[?]
365
Поинты[?]
0
C++:
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?
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
тут все ок, а ты уверен что у тебя ошибка не в kv->loadfrombuffer?
Нет, адреса не нулевые и ошибка далеко не в них. Да даже если в тупую сравнивать, в том же лв, всё отлично работает. Потому я и создал эту тему, что вроде бы всё работает, но чет нихуя:kappa:
 
bruh
Участник
Статус
Оффлайн
Регистрация
15 Апр 2017
Сообщения
1,299
Реакции[?]
365
Поинты[?]
0
а зачем ты кстати юзаешь kv->Init("vertexunlit") если у тебя юзается loadfrombuffer?
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
а зачем ты кстати юзаешь kv->Init("vertexunlit") если у тебя юзается loadfrombuffer?
Подожди. А ты где это вообще увидел ? Я в общем-то с keyValues ничего и не делаю, помимо кастов
 
bruh
Участник
Статус
Оффлайн
Регистрация
15 Апр 2017
Сообщения
1,299
Реакции[?]
365
Поинты[?]
0
Подожди. А ты где это вообще увидел ? Я в общем-то с keyValues ничего и не делаю, помимо кастов
1639572171500.png

ты вызываешь сначала Init(type), и потом loadfrombuffer, не думаю что это влияет на твою ошибку но все же это лишние вызовы
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
Посмотреть вложение 184462

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