Объявления

Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru.
Я оторву свою задницу от всех дел и обязательно Вас активирую! :smile10:
Добро пожаловать на геройский форум! :smile25:

H3API by RoseKavalier

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: H3API by RoseKavalier

Сообщение void_17 » 30 май 2021, 14:09

AlexSpl писал(а):

Нужно #define _H3API_PATCHER_X86 поднять вверх, я думаю. _bool_ - это тип, который определяется патчером, а не H3API.


Я так и делал.
#define _H3API_PATCHER_X86 ставил в самый верх файла, не помогало.

Цитата:
_bool_ - это тип, который определяется патчером, а не H3API.


Да тут даже не в нем дело, в моем основном DLLmain ему не нравилось ВООБЩЕ ВСЁ.
От функций, в которых ему не нравилось то, что они, оказывается, имеют тело в виде фигурных скобок, до банальных стейтментов, которые он хотел сломать, разбив на несколько и т.д..
Я уже день бьюсь над этим и никак не могу понять, что ему не нравится? Ошибки связаны с каким-то токеном.

Заметил, что VS пишет, что "ошибок нет", хотя в окошке ошибок их очень много и 99% из них в dllmain

Изображение

Может есть какой-то аналог VS, который позволил бы создавать и редактировать DLL удобно?
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: H3API by RoseKavalier

Сообщение AlexSpl » 30 май 2021, 14:14

Что могу сказать? Я давно не обновлял H3API и у меня всё нормально компилируется. Может, в последней версии есть какие-то нюансы? :smile5:

Попробуйте заменить _bool_ на __int32 или даже int.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: H3API by RoseKavalier

Сообщение void_17 » 30 май 2021, 14:33

Прилагаю вам пример такого dll, в котором VS просто в бешенстве от всего и не даёт ничего сделать. Прошу вас проверить, такое же ли у вас происходит или нет.
https://drive.google.com/file/d/1AOCN_6 ... sp=sharing
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: H3API by RoseKavalier

Сообщение AlexSpl » 30 май 2021, 14:35

Иногда достаточно исправить одну ошибку, чтобы исправились все остальные.
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: H3API by RoseKavalier

Сообщение RoseKavalier » 30 май 2021, 14:36

Any H3API preprocessor definition has to appear before including the library.

e.g.
Код: Выделить всё
#define _H3API_PATCHER_X86_ // needs to appear before
#include "......./single_header/H3API.hpp"


To really decipher your issues I'd have to look at your solution, it's possible you set incompatible settings.

EDIT: sent request to access GDrive.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: H3API by RoseKavalier

Сообщение AlexSpl » 30 май 2021, 14:38

Вот и я говорю, что нужно выше прописывать :smile1:
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: H3API by RoseKavalier

Сообщение void_17 » 30 май 2021, 14:38

RoseKavalier писал(а):

sent request to access GDrive.


Check this out.
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: H3API by RoseKavalier

Сообщение RoseKavalier » 30 май 2021, 15:03

Alright, first you are using x64 platform, which is incompatible - that is why you were getting static assert failures.
You can leave the build on Debug for your own testing purposes, but remember to switch to Release before sharing published code.
Изображение

Next, since you are using precompiled header unit, move all external includes there.
Изображение

Finally, since microsoft started adding new safety checks on use of some functions, you will get this type of error callout:
Код: Выделить всё
 error C4996: '_vsnprintf': This function or variable may be unsafe. Consider using _vsnprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

To get rid of this you can add the preprocessor definition _CRT_SECURE_NO_WARNINGS before <windows.h> in framework.h, or add a pragma ignore around the issue.
#1
Изображение
#2
Изображение
This issue is not triggered if you use a less modern platform (e.g. v141_xp). I've added the safety check removal for future versions.

Voila!
Изображение
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: H3API by RoseKavalier

Сообщение void_17 » 30 май 2021, 15:15

It turned out, the problem wasn't even in the x64 mode. I have found the solution — I just moved #include <pch.h> to the top of the dllmain.cpp file and thus eliminated all of these strange errors. Spent the whole day without any progress and come to this dumb mistake...

But anyway, thanks for your suggestion to set to the x86 mode, it really helped me to avoid static assert failures.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: H3API by RoseKavalier

Сообщение Ben80 » 16 июн 2021, 09:04

Обратил внимание, что во многих структурах H3API вместо 2 байт (например, 1-байтовое поле + какое-то unknown поле) присутствует просто 1-байтовое поле - естественно, с нарушением общего размера всей структуры и смещений последующих полей.
Вернуться к началу

Пред.След.

Вернуться в Общий раздел

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19