C++Builder XE3 64 位应用程序始终需要 rtl170.bpl
C++Builder XE3 64-bit application always requires rtl170.bpl
我使用 C++Builder XE3 构建了一个 64 位应用程序,它 运行ning 在 Windows Server 2003(32 位)上。我可以编译它,但当然不能运行在那台电脑上。
我将 .exe 复制到 Windows 7(64 位)计算机,现在它抱怨找不到 rtl170.bpl。我已明确将项目选项设置为不使用任何运行时包。
这是 XE3 中的错误还是因为我在 32 位计算机上构建应用程序而失败?
您还需要禁用 "Use dynamic RTL"(链接器)。
您可以使用 Dependency Walker 检查您构建的二进制文件(exe、dll 等)的依赖关系。
这将准确显示依赖项的来源。一种可能是您的代码依赖于某些其他库或 DLL,而后者又依赖于 rtl170
.
另一件要检查的事情是,您实际上正在为您正在构建的项目寻找正确的项目选项。例如,假设您正在使用 Win64-Release,然后在项目选项中,确保当您位于 "Runtime Packages" 字段时 "Target" 组合框显示 "Release configuration - 64-bit Windows platform"。 (在那个阶段,"Link with runtime packages" 应该取消选中)。
确认此设置后,对项目以及您链接的所有依赖库进行完全重建。 (示例 - 如果您还构建了 OpenSSL 并正在链接到它,请确保您已关闭 "Link with runtime packages" 以构建 OpenSSL)。
就我而言,我必须 enable/disable 在项目选项下进行以下设置
包
- 运行时包
- ❌ Link 带有运行时包
C++ Linker
- ❌ Link 动态 RTL
- ❌ Link 与 Delphi 运行时库
- ✔️ 禁用增量 link
我使用 C++Builder XE3 构建了一个 64 位应用程序,它 运行ning 在 Windows Server 2003(32 位)上。我可以编译它,但当然不能运行在那台电脑上。
我将 .exe 复制到 Windows 7(64 位)计算机,现在它抱怨找不到 rtl170.bpl。我已明确将项目选项设置为不使用任何运行时包。
这是 XE3 中的错误还是因为我在 32 位计算机上构建应用程序而失败?
您还需要禁用 "Use dynamic RTL"(链接器)。
您可以使用 Dependency Walker 检查您构建的二进制文件(exe、dll 等)的依赖关系。
这将准确显示依赖项的来源。一种可能是您的代码依赖于某些其他库或 DLL,而后者又依赖于 rtl170
.
另一件要检查的事情是,您实际上正在为您正在构建的项目寻找正确的项目选项。例如,假设您正在使用 Win64-Release,然后在项目选项中,确保当您位于 "Runtime Packages" 字段时 "Target" 组合框显示 "Release configuration - 64-bit Windows platform"。 (在那个阶段,"Link with runtime packages" 应该取消选中)。
确认此设置后,对项目以及您链接的所有依赖库进行完全重建。 (示例 - 如果您还构建了 OpenSSL 并正在链接到它,请确保您已关闭 "Link with runtime packages" 以构建 OpenSSL)。
就我而言,我必须 enable/disable 在项目选项下进行以下设置
包
- 运行时包
- ❌ Link 带有运行时包
- 运行时包
C++ Linker
- ❌ Link 动态 RTL
- ❌ Link 与 Delphi 运行时库
- ✔️ 禁用增量 link