>Ты чего народ обманываешь? Или ты не знаешь, что такое статическая линковка? vgui слинкована динамически, её кода внутри собранного движка нет, есть лишь точки связки для подключения динамической либы и заранее сгенерированный код, который на старте сам грузит и связывает её с движком
2 gfdjr5:
Тут я конечно неправильно выразился, но ты тоже неправ.
Подразумевалась в виду, что была именно линковка, а не загрузка в рантайме.
Сгенерированного кода тут нет, связыванием занимается операционная система. В случае отсутствия vgui LoadLibraryA вернёт шиш т.к система не сможет произвести связывание, следовательно xash.dll не загрузится и на это повлиять никак нелзя.
Единственное, что можно сделать, чтобы избежать использования vgui - подсунуть стабовый vgui.
У меня даже есть такой. Хотел восстановить полностью, но забросил. Однако он уже может быть загружен движком и создать panel. Код кнопок вроде написан, но ни разу не проверял его, для клиента надо больше элементов.
>Сомнительное утверждение
Чем же сомнительное?
Структуры одинаково представлены, calling conversion относится уже к особенностям реализации языка для процессора и на разных платформах одинаковые.
Были такие сложности:
1. VS использует особый манглинг аргументов при возвращении агрегатных типов в Си
2. В linux версии не используется stdcall
Первое не описано стандартом языка c89, который использует штудия для си (C99 они не уважают) и является UB
Второе уже не относится к ABI, а просто так хл портировали. И вообще stdcall - зло.