Пока разбирался с наличием у меня 64-битного компилятора в VS 2005, захотелось поэкспериментировать с компиляцией в VS 2008 для 2009го автокада. Как известно, автокад такие ARX, скомпилированные не той версией VC, загрузить не дает. Начал сравнивать, в чем же отличие двух модулей, собранных в VS 2005 и VS 2008 (попутно выкинул из файла CRT, благодаря чему файлик теперь весит 4608 байт).
Для начала
FC /b arx_vs2005.arx arx_vs2008.arx > diff.txt
Не вариант - до кучи отличий...
Потом попробовал сравнить дизассемблированный листинг - тут наоборот - файлы практически один в один...
Скачал PE explorer, сравнил заголовки, оказалось все до банального просто: в PE-заголовке есть поле: Linker version. Там значения соответственно 08 и 09.
Открываем файл в WinHex, находим по смещению 0xF2 байт со значением 09 и меняем на 08, сохраняем. Готово. Автокад скушал наш файлик.
Для интересующихся - готовый проект для Visual Studio 2008 с использованием VCBuildHook : pdmxrefs.zip
Дисклаймер:
1) Используйте на свой страх и риск. Не проверялась совместимость при использовании CRT, MFC и прочего.
2) Я не в курсе, является ли смещение 0xF2 постоянным.
Комментариев нет:
Отправить комментарий