我使用在Windows Server 2003(32位)上运行的C ++ Builder XE3构建了一个64位应用程序。我可以编译它,但当然不能在那台计算机上运行它。
我将.exe复制到Windows 7(64位)计算机上,现在它抱怨无法找到rtl170.bpl。我已明确将项目选项设置为不使用任何运行时包。
这是XE3中的错误还是因为我在32位计算机上构建应用程序而失败?
答案 0 :(得分:4)
您还需要禁用"使用动态RTL" (接头)。
答案 1 :(得分:0)
您可以使用Dependency Walker检查已构建的二进制文件(exe,dll等)的依赖项。
这将准确显示依赖关系的来源。一种可能性是您的代码依赖于某些其他库或DLL,而这又取决于rtl170
。
要检查的另一件事是,您实际上正在查看正在构建的项目选项。例如,假设您正在进行Win64-Release,然后在“项目选项”中,确保“目标”组合框在“运行时包”字段中显示“发布配置 - 64位Windows平台”。 (在该阶段,应取消选中“与运行时包链接”)。
确认此设置后,以及要链接的任何依赖库,执行项目的完全重建。 (示例 - 如果您还构建了OpenSSL并且正在链接到那个,请确保关闭OpenSSL的“链接运行时包”)。