2015-02-06 60 views
0

我使用C++ Builder XE3構建了一個64位應用程序,該應用程序在Windows Server 2003(32位)上運行。我可以編譯它,但當然不能在該計算機上運行它。C++ Builder XE3 64位應用程序始終需要rtl170.bpl

我將.exe複製到Windows 7(64位)計算機,現在抱怨找不到rtl170.bpl。我已經明確地將項目選項設置爲不使用任何運行時軟件包。

這是XE3中的錯誤,還是因爲我在32位計算機上構建應用程序而失敗?

回答

4

您還需要禁用「使用動態RTL」(鏈接器)。

+0

在64位模式下(無論如何XE5,不知道XE3)「使用動態RTL」複選框實際上沒有影響; RTL鏈接由出現在Runtime Packages列表中的「rtl」控制。 – 2015-02-09 00:29:59

+0

是的,這是XE3中的設置。呃,exe文件的大小從2MB增加到12MB!還有另一個設置,「與Delphi運行時庫(rtl包和cp32mt.lib/cp32mti.lib)鏈接」,但我不需要關閉 – 2015-02-09 08:47:09

0

您可以使用Dependency Walker來檢查您構建的二進制文件(exe,dll等)的依賴關係。

這將精確顯示依賴關係來自何處。一種可能性是您的代碼依賴於其他庫或DLL,而這又取決於rtl170

要檢查的另一件事是,你實際上正在尋找正確的項目選項爲你正在建設。例如,假設您正在執行Win64-Release,然後在Project Options中,確保當您在「運行時軟件包」字段中時,「目標」組合框顯示「發佈配置 - 64位Windows平臺」。 (在這個階段,應該取消選中「與運行時軟件包的鏈接」)。

在確認此設置以及您正在鏈接的任何相關庫後,執行完整重建項目。 (例如 - 如果您還構建了OpenSSL並鏈接到該鏈接,請確保已針對OpenSSL的構建關閉了「與運行時包關聯」)。