0

我有一个使用旧版 32 位 C++ 编译器的旧版 Windows 项目。由于各种原因,我需要使用 Windows 8+ 功能PathCchCanonicalizeEx。C++Builder 似乎为此提供了头文件和一些模块定义文件,但我找不到任何库。因此,我下载了 Windows 8.1 SDK 并按照文档说明在 C++Builder 中提供了它。虽然这些文档适用于较新版本,但在我的旧版本中情况非常相似。

成功安装并添加 SDK 后,我可以选择它作为 32 位 Windows 的目标,或者更可能将两者相互连接或类似的东西。虽然,链接我的应用程序仍然失败:

[ilink32 Error] Error: Unresolved external 'PathCchCanonicalizeEx' referenced from C:\[...]\WIN32\DEBUG\TMP\FILE.OBJ

当然,我希望以某种神奇的方式使 SDK 可用,从而使包含的库可用于项目,但情况似乎并非如此。此外,我认识到,虽然 SDK 的一些二进制工具的路径是在 SDK 管理器中维护的,但似乎没有将 SDK 的任何 lib 路径添加到项目文件中的任何位置,甚至没有添加到全局 IDE 设置及其路径中。

这是预期的吗?

pathcch.lib从 SDK 手动添加必要的到项目中时,链接仍然失败,因为 lib 文件的格式不同:

[ilink32 Error] Error: 'C:\PROGRAM FILES (X86)\WINDOWS KITS\8.1\LIB\WINV6.3\UM\X86\PATHCCH.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

所有添加的 SDK 不会发生这种情况吗?使用 SDK 管理器使 SDK 可用后,我在文档中找不到任何其他步骤,但显然事情根本无法以这种方式工作。甚至较新版本的 C++Builder 也使用 OMF,因为它们的旧版编译器/链接器或 ELF/ELF64,因为 CLANG/LLVM。

那么如何使用 COFF 使用库配置一些 MS SDK 呢?

我尝试使用coff2omf,当然;-)转换lib文件,但也失败了。此外,在我看来,强制 C++Builder 的所有用户手动转换单个库并且甚至在文档中都没有提及它是没有多大意义的。

COFF to OMF Converter Version 1.2.0 Copyright (c) 1999-2009 Embarcadero Technologies, Inc.
 All rights reserved.
ERROR: COFF error: C:\[...]\pathcch.lib
  (coffread.cpp, 1637) : invalid machine type detected

那么,关于 SDK 以及如何集成它们,我在这里从根本上缺少什么?

4

0 回答 0