从旧的Borland C ++迁移到Visual C ++ Express

时间:2009-05-07 15:25:42

标签: c++ visual-c++ migration

冒着出现恐龙的风险,我有一些旧的C ++代码,用Borland C ++编译,它设置寄存器,并与Assembler模块接口,我想现代化。我刚刚安装了MS VC ++ Express,不用说很多东西都不行!默认似乎是Win32,这很好,所以我已经消除了FAR和巨大。 PASCAL似乎映射到__stdcall。所以我有一个宏

 #define THRCOMP  extern "C" int FAR PASCAL _Export

其中THRCOMP位于模块名称前面。这可能会产生类似

的结果
extern "C" int __stdcall _Export <modname>;

编译器不喜欢,并发出关于“时代错误”的消息(不说什么!)。有什么问题?

旧代码集还有内联汇编程序,我需要将其转换为单独编译的子程序 - 是否有(免费)汇编程序,它可以用C ++链接Assembler obj decks吗?

顺便说一句,我看不到我的obj甲板 - 但WinZip捡起它们!解释

通常,是否有迁移旧C ++代码的指南?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您的示例中的几个具体事项:

  • VC根本不喜欢_Export
  • 不合时宜的是你在数据声明上有修饰符(如__stdcall)。如果<modname>没有parens,则它是一个数据声明,修饰符不做任何事情。如果<modname>是在程序集中实现的函数,那么您仍应该声明包含参数列表。

例如:

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

你可以从Windows Driver Kit(WDK - 曾经被称为DDK)获得一个免费的汇编程序,但是如果你当前的代码是使用Borland的TASM编译器编写的,那么它可能没有使用相同的语法,所以移植它可能会有相当多的工作。但是,如果当前的汇编程序是16位代码,那么无论如何你都需要将它移植到32位汇编程序......