Tôi có một DLL mở rộng MFC xuất ra lớp C++ và tôi cần phải sửa đổi hành vi của một phương thức lớp. Những thay đổi không ảnh hưởng đến chữ ký của các phương thức của lớp.Biên dịch lại MFC Extension DLL thay đổi các điểm nhập của các hàm đã xuất
Tôi không muốn biên dịch lại các mô-đun đã sử dụng tệp "lib" của phiên bản được phát hành trước đó của thư viện này.
Điều gì sẽ xảy ra nếu thay đổi sửa đổi địa chỉ của điểm nhập của các chức năng?
Ví dụ, địa chỉ của các nhà xây dựng đã thay đổi:
Export Ordinal Function Hint Entry Point
[+ ] 3 (0x0003) 2 (0x0002) [email protected]@[email protected] 0x00009CB0 (OLD DLL)
[+ ] 3 (0x0003) 2 (0x0002) [email protected]@[email protected] 0x00009760 (NEW DLL)
Tôi có nên biên dịch các module có sử dụng thư viện không?
Tôi đã thử nghiệm thư viện được biên dịch lại - với các điểm nhập mới - sử dụng các tệp thi hành được phát hành và mọi thứ hoạt động tốt. Tôi không chắc chắn rằng kịch bản này đang ẩn một số tác dụng phụ.
Khi nào cần biên dịch lại tệp thực thi liên kết đến DLL?
Khi nào khả năng tương thích nhị phân bị hỏng?
Vì dường như anh đang sử dụng các lớp, một thể hiện khác có thể gây ra vỡ tinh tế, ngoài nhận xét của bạn về vị trí, là các biến thành viên mới được thêm vào bên trong một lớp nằm trong DLL. –
@NikBougalis, cảm ơn lời nhắc - tôi đã thêm vào câu trả lời của mình để đề cập đến tình huống đó. –
Cảm ơn tất cả vì sự giúp đỡ của bạn. – sam