Сейчас на форуме: zds (+5 невидимых)

 eXeL@B —› Программирование —› Update compiler & linker(папка BIN) для MS VS C++ 6.0
Посл.ответ Сообщение

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 08 марта 2014 11:20
· Личное сообщение · #1

Вообщем на досуге, решил обновить папку BIN в древнем Microsoft Visual Studio 6 (косвенный повод: не понравилось, как не удачно код в цикле for был откомпилирован). Новые compiler & linker взял с VS 9.0 (2008).
- Меньше всего проблем с линкером ака link.exe(при условии, если менять только его), для Release файл нормально линкуется(даже размер меньше ~20%, чем родным линкером 6.0). В Debug конфликты с file data base(впрочем, это неважно).
- А вот с компилятором пришлось повозиться, используя олю. В конце концов он работать стал(Release), но дальше этих ошибок дело не идет:
Code:
  1. cl.exe
  2. Compiling...
  3. StdAfx.cpp
  4. C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxwin1.inl(1014) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  5. C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxwin1.inl(1016) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  6. C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\ocidl.h(4675) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Причем даже если убрать/закомментировать эти строки-он все равно пишет одно и то же. Насколько я в курсе, в новых версиях мелкомягкие компиляторы на int(itoa) ругаются ворнингами, требуя заменить на long. А тут ступор.

Собственно основной вопрос: Нормально ли так делать (апгрейдить папку BIN от новых студий)? Я исходил из того, что студия, по существу - оболочка и принципиально ничем не завязана на компиляторах/линкерах (разве что опции компиляции/компоновки выставлять, но для старой VS можно напрямую использовать комп строку внизу и обойти проблему незнания новых ключей). Просветите по этому вопросу.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 08 марта 2014 11:38
· Личное сообщение · #2

А что мешает обновить всю студию? Лень много ставить, поставь интел компиль.
И студия-это не только компилятор, это как минимум ещё пачка хедеров и либ. И хоть они и должны быть написаны более-менее по стандарту, это далеко не всегда так. Скажу более того, на 2010 студии были стандартные хедеры, которые приходилось править руками, ибо в них были ошибки. Так что не удивлюсь, если компилю не понравятся хедеры сильно другой версии.

| Сообщение посчитали полезным: TLN

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 08 марта 2014 11:54 · Поправил: ELF_7719116
· Личное сообщение · #3

Archer пишет:
А что мешает обновить всю студию?

Новая студия есть уже, но хочу попробовать.
А для VS 6.0, только Intel С++ compiler 10, но не могу найти, где на трекере его скачать в нормальном виде.

Так что не удивлюсь, если компилю не понравятся хедеры сильно другой версии.
Как-то по дурацки он пишет, что ему не понравилось -поди догадайся что править.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 08 марта 2014 13:05 · Поправил: reversecode
· Личное сообщение · #4

для VS60 можно проапдейтить только компилеры от 7.1, причем их еще патчить надо(я на wasm выкладывал)
и тогда можно проапдейтить все хидеры и либы от 7

студия там завязана на pdb, что бы дебажить можно было, и на всякие другие разные опции
поэтому просто copy BIN на сработает

VC60 -> VC71(VC2003) --> Link <--

| Сообщение посчитали полезным: ELF_7719116

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 08 марта 2014 15:17
· Личное сообщение · #5

reversecode
Если я правильно понял, готовых патченых решений нету? (искать и качать целую студию чет как-то долго)




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 08 марта 2014 15:25 · Поправил: reversecode
· Личное сообщение · #6

я забил на иде, мне отладка не нужна я код и так могу писать в фаре
а скомпилить если надо можно заюзать
VCToolkitSetup.exe --> Link <-- (тоже 7.1 но не помню можно ли пропатчить)


поэтому если хочется сидеть на VS 6.0 IDE и обновить компилер до 7.1(вместе с include + libs - обновлять обязательно там есть привязки некоторых check stack кукисов итд), нужно искать все и патчить

Q: почему можно патчить именно 7.1 ?
A: потому что это последний компилер который поддерживает два формата pdb, и старый и новый,
дальнешие компилеры в 8.0 и выше, уже не поддерживают старый pdb формат, поэтому к IDE 6.0 зауши уже не притянуть

ELF_7719116 пишет:
искать и качать целую студию чет как-то долго

там можно не студию а wdk/ddk уже не помню, главное это поодержка компилером старого формата pdb
но опции для патчинга нужно искать по новой



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 08 марта 2014 18:22
· Личное сообщение · #7

Хочу уточнить окончательно: как альтернативу всему этому, можно заюзать Intel C++ компилер. Правда, я не могу найти нигде 10.1 версию, ибо http://software.intel.com/en-us/articles/visual-studio-60-is-not-supported-in-the-110-version/. Ее можно просто установить, и без танцев с бубном также билдить проект по нажатию клавиши??




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 08 марта 2014 18:50 · Поправил: reversecode
· Личное сообщение · #8

интел компилер
- не генерит pdb, поэтому отлаживать в студии ты все равно не сможешь
- можно использовать для релизового билда что бы была оптимизация

подумай и определись за чем ты гонишься и что тебе действительно надо

я для себя переходил с vs 6.0 компилера на 7.1 и патчил для того что бы была нормальная поддержка С++, потому что в 6.0 студии компилера она очень слабая

интел компилер могу за тебя конечно поискать, мне несложно
w_cc_p_10.1.020.exe
icc_lic.rar



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 08 марта 2014 19:59
· Личное сообщение · #9

reversecode пишет:
интел компилер
- не генерит pdb, поэтому отлаживать в студии ты все равно не сможешь
- можно использовать для релизового билда что бы была оптимизация

- я отлаживаю в ольке/иде
- то что нужно

за ссылки биг сенкс




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 08 марта 2014 20:13 · Поправил: reversecode
· Личное сообщение · #10

какой тогда вообще смысл 6.0 студии? ставь какой нибудь codelite / codeblooks / etc настраивай под него интел компилер и вуаля

vs 6.0 + 7.1 компилер нужно использовать когда нужно лучшая поддержка компилятора с++ и хочется
красивых удобностей при отладке ввиде отладка по соурс коду, брек поинты по соурс коду, всякие watch переменных итд



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 09 марта 2014 10:38
· Личное сообщение · #11

reversecode
Все ништяк
Единственный вопрос по Intel C++, есть код:
Code:
  1. MOV ECX, offset Buffer[0]

при компоновке компилер выплевывает ошибку:
Code:
  1. xxxx.cpp(152) (col. 4): error: syntax error [ -- __asm mov

ругается он на offset. Собственно как нужно записать, чтоб Intel C++ понял, что это оффсет?

зы: Не, я конечно понимаю, что можно через LEA разрулить, но это как-то не true.



Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 14 марта 2014 08:54
· Личное сообщение · #12

просто попробуй убрать offset



Ранг: 53.9 (постоянный), 33thx
Активность: 0.050
Статус: Участник

Создано: 14 марта 2014 09:48 · Поправил: deniskore
· Личное сообщение · #13

ELF_7719116 пишет:
Собственно как нужно записать, чтоб Intel C++ понял, что это оффсет?

Возможно mov dword ptr []



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 14 марта 2014 13:26
· Личное сообщение · #14

drone пишет:
просто попробуй убрать offset

deniskore пишет:
Возможно mov dword ptr []

Если убрать offset, то это воспринимается компилятором как обращение непосредственно к объекту, а не присваивание его адреса(смещения), т.е. на выходе код:
Code:
  1. MOV ECX, DWORD PTR DS:[ 0x444444], где 0x444444 - адрес &Buffer[0]. Получаем значение из буфера

что совсем не одно и то же чем:
Code:
  1. MOV ECX, OFFSET 0x444444, получаем указатель на буфер Buffer[0]



 eXeL@B —› Программирование —› Update compiler & linker(папка BIN) для MS VS C++ 6.0
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати