tôi phải phát hành một vài thay đổi trong DLL chọn (thay đổi đơn giản nội bộ với các phương pháp - không có gì mà phá vỡ khả năng tương thích theo this)VB6 - phát hành chỉ có một vài DLL có sự phụ thuộc nặng nề mà không vi phạm bất kỳ tài liệu tham khảo
Vì vậy, nói chung phương pháp được chấp nhận là duy trì các tệp DLL cũ trong một thư mục chia sẻ riêng biệt và trong khi tạo các tệp DLL mới, biên dịch chúng với khả năng tương thích nhị phân được đặt thành bộ tệp DLL cũ. Điều này được thực hiện để không thay đổi GUID trong khi tôi đăng ký các DLL mới của mình. Các GUID này được sử dụng làm tài liệu tham khảo trong các DLL khác mà tôi không bị quấy rầy trong khi phát hành.
Bây giờ, khi tôi cố gắng tạo bất kỳ DLL mới nào, tôi nhận được cảnh báo: "DLL tương thích nhị phân hoặc EXE chứa kiểu tham số hoặc kiểu trả về có định nghĩa không thể tìm thấy". Tôi khá chắc chắn tôi đã không thêm bất cứ điều gì để phá vỡ các quy tắc tương thích nhị phân (Không có thay đổi trong chữ ký, phương pháp công cộng, biến vv). Tôi có phải là một noob bằng cách không kiểm tra một cái gì đó cơ bản?
Gãi đầu của tôi từ sáng. Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.
CHỈNH SỬA: Nếu có thay đổi về chữ ký của tôi, có cách nào tôi có thể biết mà không cần so sánh mã không?
Có thể mã của bạn đã phá vỡ tính tương thích trước đó. VB6 không cảnh báo, khi bạn thêm bất kỳ phương thức hoặc thuộc tính công khai mới nào, nhưng các biên dịch tiếp theo tạo các typelib khác nhau - vì DLL tham chiếu của bạn không chứa phương thức mới này. Tôi nghĩ (nhưng không có kinh nghiệm) rằng thông điệp cụ thể (... định nghĩa không thể được tìm thấy) có thể cho thấy một số thay đổi trong tài liệu tham khảo dự án hoặc bạn đã gỡ cài đặt/không đăng ký một số thành phần khác từ hệ thống của bạn. – Arvo
Mục tiêu tương thích nhị phân của bạn sử dụng các loại từ typelib bên ngoài (có thể là một dự án VB6 khác) không được đăng ký đúng trên máy xây dựng hoặc là phiên bản không tương thích mới/cũ. – wqw
@Arvo - Có thể mã đã bị hỏng trước đó. Trong trường hợp đó, phải có ít nhất hai typelib (một cho trước khi nghỉ và một cho sau). Nhưng đăng ký của tôi chỉ chứa một số – maverick