Миграция со старого Borland C ++ на Visual C ++ Express - PullRequest
2 голосов
/ 07 мая 2009

Имея риск появления динозавра, у меня есть какой-то старый код C ++, скомпилированный с Borland C ++, который устанавливает регистры и интерфейсы для модуля Assembler, который я хотел бы модернизировать. Я только что установил MS VC ++ Express, и, разумеется, многие вещи не работают! По умолчанию, кажется, Win32, что хорошо, поэтому я отключил FAR и HUGE. Кажется, PASCAL отображается на __stdcall. Итак, у меня есть макрос

 #define THRCOMP  extern "C" int FAR PASCAL _Export

, где THRCOMP идет перед именем модуля. Предположительно это приводит к чему-то вроде

extern "C" int __stdcall _Export <modname>;

, который не нравится компилятору, и выдает сообщение об «анахронизме» (не говорит, что!). Что не так?

Также в старых кодовых наборах есть встроенный ассемблер, который мне нужно превратить в отдельно скомпилированную подпрограмму - есть ли (бесплатный) ассемблер, и может ли он связать obj деки Assembler с C ++?

Кстати, я не вижу свои колоды, но WinZip поднял их! Объяснение

Как правило, есть ли руководство по переносу старого кода C ++?

Заранее спасибо.

1 Ответ

1 голос
/ 07 мая 2009

Пара конкретных вещей из вашего примера:

  • ВК вообще не любит _Export.
  • анахронизм в том, что у вас есть модификаторы (например, __stdcall) в объявлении данных. Если у <modname> нет паренов, это объявление данных, а модификаторы ничего не делают. Если <modname> является функцией, реализованной в сборке, вы все равно должны иметь объявление, включающее список аргументов.

Например:

extern "C" int __stdcall  modname( int x);

Вы можете получить бесплатный ассемблер из Windows Driver Kit (WDK - то, что раньше называлось DDK), но если ваш текущий код написан с использованием компилятора TASM Borland, он может не использовать тот же синтаксис, поэтому его портирование может потребовать много работы. Однако, если текущий ассемблер представляет собой 16-битный код, вам все равно придется много работы по переносу его на 32-битный ассемблер ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...