Tôi đang xây dựng một chương trình sử dụng plugin. Thật không may, liên kết động của khung plugin buộc RTL và VCL ra khỏi dự án EXE của tôi và vào các phiên bản BPL, và họ không có thông tin gỡ lỗi được kích hoạt.Tại sao đơn vị của tôi "được biên dịch bằng một phiên bản khác" của các tệp của riêng tôi?
Vì vậy, tôi đã xây dựng một khuôn khổ kiểm tra liên kết đến các plugin của tôi một cách tĩnh để tôi có thể thực sự nhìn thấy những gì tôi đang làm khi truy tìm mã. Nhưng bây giờ, mỗi khi tôi cố gắng biên dịch lại, tôi nhận được một lỗi: "đơn vị turbu_skills được biên dịch với một phiên bản khác của turbu_database.GDatabase"
Tôi đã nhìn thấy lỗi này trước đây, nhưng chỉ khi tôi đã thay đổi mọi thứ Tôi có lẽ không nên, giống như các thư viện RTL hoặc VCL. Tôi không hiểu tại sao nó làm điều đó với mã của riêng tôi. Các đơn vị turbu_skills và turbu_database đều là các đơn vị mà tôi đã viết. GDatabase là một biến singleton toàn cầu, có định nghĩa lớp tôi đã không thay đổi trong tuần. Bất kỳ thay đổi nào kích hoạt biên dịch lại gây ra lỗi này, ngay cả khi tôi chưa chạm vào bất kỳ thứ gì trong một trong các đơn vị.
Làm một bản dựng đầy đủ (SHIFT-F9) khiến nó biên dịch chính xác. Nhưng nếu sau đó tôi nhấn SPACE trong một đơn vị (bất kỳ đơn vị nào) và nhấn F9, tôi sẽ gặp lại lỗi. Điều gì đang xảy ra và làm cách nào để ngăn chặn nó? Điều này không xảy ra trong ứng dụng chính, chỉ có khung kiểm tra.
EDIT: Tôi có nguồn cho tất cả các đơn vị của mình. Xóa DCUs và các tệp tương tự không giúp ích gì. Sao chép toàn bộ dự án sang một máy tính khác, xóa tất cả DCU và việc xây dựng ở đó không có tác dụng. Có một xung đột khách quan, có thể tái tạo giữa bố cục chương trình của tôi và trình biên dịch, và tôi muốn loại bỏ nó.
Nguồn có thể được tìm thấy tại http://www.turbu-rpg.com/downloads/Turbu_source_setup.exe nếu có ai muốn thử nghiệm. Nó đòi hỏi Delphi 2009 với JVCL đã được cài đặt; gói cài đặt sẽ xử lý phần còn lại. Có thể có mã nguồn có sẵn sẽ giúp ai đó theo dõi điều này. Tôi chắc chắn hy vọng như vậy, bởi vì bất cứ nơi nào vấn đề là, nó vượt ra ngoài tôi. Vấn đề có thể được tìm thấy trong testing.exe và cũng trong turbu.exe trong turbu.groupproj.
CHỈNH SỬA 2: Hóa ra đây là một vấn đề chung về đơn vị chéo khác. Grr. Tôi quản lý để mã một workaround. Tôi chỉ hy vọng họ nhận được các vấn đề generics cố định sớm.
Bạn có thể nên viết một câu trả lời với công việc xung quanh. Nó sẽ giúp người khác vấp ngã trên cùng một vấn đề. –
Cảm ơn EDIT 2, tôi whish tôi có thể đến đây vài giờ lãng phí trước đó ... – Wodzu
@Mason Wheeler - 12 câu trả lời khác nhau! NÓ LÀ ĐƠN GIẢN TUYỆT VỜI Có bao nhiêu người có (tất cả các loại) vấn đề liên quan đến đường dẫn tìm kiếm/thư viện. Embarcadero đã làm một công việc rất rất nghèo giải thích điều này! – Ampere