Народ, мож кто знает как отключить этот гребаный exception directory в MSVC для PE64 В общем в чем суть: msvc при компиляции проги под x64 создает exception directory. При этом вся фишка в том, что в проге __try __except не юзается а содержимое exception directory по факту это таблица всех функций в виде АДРЕС-РАЗМЕР-КАКАЯТОХРЕНЬ Можно конечно вручную удалять из PE адрес этой таблицы и потом затирать в файле её содержимое, но это как-то не по феншую. А то мало того что почти 5 килобайт съедает бесцельно, так еще и палит разположение и размер функций. Перерыл все возможные настройки - нигде нет ничего подобного. Знаю только то, что это именно компилятор делает, а не линкер.
На ц++ я не пишу. Но знаю, что в нормальных языках (таких как ява, например) устанавливается глобальный обработчик эксепшенов. Нагуглил это http://stackoverflow.com/questions/...tion-handler-for-visual-studio-2010-vspackage Соответственно, в msvc нет возможности поставить глобальный хендлер эксепшенов. Писать код надо по нормальному а не закрывать глаза на ошибки. По моему всё прекрасно гуглится.
1) Я спрашивал именно по С/С++ а не яву. Если мне нужен будет глобальный обработчик, то в моем распоряжение 2 апишки которые с этим справляются. 2) Гуглить я и сам умею но решения с /gx и /saveseh и /EH* - ни дают никакого результат. По этому и спросил.
Не уверен, что у тебя получится их убрать. PE64 работает только с табличной обработкой эксепшенов. Вот это является записью в таблице Exception Directory: https://msdn.microsoft.com/en-us/library/ft9x1kdx.aspx, где третье поле (какая-то хрень) - это вот https://msdn.microsoft.com/en-us/library/ddssxxy8.aspx. Вот здесь есть подробнее об этом: https://habrahabr.ru/company/xakep/blog/260577/ (в подразделе x64)