2012-08-28 13 views
6

Trong Embarcadero RAD Studio 2010, có một thiết lập trong Tùy chọn dự án cho các thư viện tĩnh được gọi là "Dynamic RTL". (Đó là trong phần TLib.)Hiệu ứng của việc thay đổi cài đặt "Dynamic RTL" cho một thư viện tĩnh là gì?

Tôi đã ấn tượng rằng quyết định về việc có nên liên kết RTL động hay tĩnh được thực hiện tại thời gian liên kết, không phải lúc biên dịch. Nhưng các lib tĩnh chỉ biên dịch; không có bước liên kết. Vì vậy, làm thế nào để thay đổi tùy chọn này có hiệu lực lib tĩnh của tôi?

Tôi có một số dự án .exe và .dll sử dụng các lib tĩnh này và tôi đặt tùy chọn "Động RTL" trong các dự án đó. Điều này có ý nghĩa bởi vì chúng thực sự có một cái gì đó để liên kết, nhưng tôi không hiểu những gì có hiệu lực thiết lập này có trên libs tĩnh.

Có thể gây ra bất kỳ sự cố nào nếu lib tĩnh có Dynamic RTL = true trong khi các tệp DLL và EXE sử dụng libs này có Dynamic RTL = false không?

Trả lời

6

Tôi không sử dụng Embarcadero, nhưng phiên bản C++ Builder cũ hơn. Tôi nghĩ rằng họ làm việc theo cùng một cách. Khi bạn sử dụng Dynamic RTL, mã của bạn sẽ gọi các hàm RTL từ các DLL của thời gian chạy được vận chuyển cùng với chương trình của bạn. Khi bạn không sử dụng RTL động, các hàm được sao chép từ libs vào các tệp exe hoặc lib của bạn. Tôi sử dụng RTL động làm giảm kích thước của tập tin EXE. Logic là như nhau cho exe hoặc libs. Điều đó có nghĩa là nếu bạn sử dụng RTL động trong bất kỳ mô-đun nào, hãy là một exe hoặc một lib, bạn cũng sẽ phải gửi các tệp DLL runtime thích hợp.