gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:34 25 4
gpt4 key购买 nike

冒着成为恐龙的风险,我有一些旧的 C++ 代码,用 Borland C++ 编译,它设置寄存器,并连接到一个汇编程序模块,我想对其进行现代化改造。我刚刚安装了 MS VC++ Express,不用说很多东西都不起作用!默认似乎是 Win32,这很好,所以我已经删除了 FAR 和 HUGE。 PASCAL 似乎映射到 __stdcall。所以我有一个宏

 #define THRCOMP  extern "C" int FAR PASCAL _Export

其中 THRCOMP 位于模块名称的前面。这大概会导致类似的结果

extern "C" int __stdcall _Export <modname>;

编译器不喜欢它,并发出一条关于“不合时宜”的消息(没有说什么!)。怎么了?

此外,旧代码集有内联汇编器,我需要将其转换为单独编译的子例程 - 是否有(免费)汇编器,它可以将汇编器 obj decks 与 C++ 链接起来吗?

顺便说一下,我看不到我的 obj decks - 但 WinZip 捡到了它们!解释一下?

一般来说,是否有迁移旧 C++ 代码的指南?

提前致谢。

最佳答案

您示例中的一些具体内容:

  • VC 不喜欢_Export完全没有。
  • 不合时宜的是你在数据声明上有修饰符(如 __stdcall )。如果<modname>没有括号它是一个数据声明,修饰符不做任何事情。如果<modname>是在汇编中实现的函数,您仍然应该让声明包含参数列表。

例如:

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

您可以从 Windows Driver Kit 获得免费的汇编程序(WDK - 过去称为 DDK),但如果您当前的代码是使用 Borland 的 TASM 编译器编写的,它可能不会使用相同的语法,因此可能需要大量的移植工作。但是,如果当前的汇编器是 16 位代码,那么将它移植到 32 位汇编器将需要做很多工作...

关于c++ - 从旧的 Borland C++ 迁移到 Visual C++ Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/835324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com