Tôi đang viết một DLL để cắm vào ứng dụng (bên thứ 3) khác. Các DLL sẽ cần phải phụ thuộc vào một tập hợp các DLL (vì lý do giấy phép tôi không thể liên kết tĩnh).Plugin DLL phụ thuộc vào các tệp DLL khác
Tôi muốn tệp DLL của mình được "xcopy-deployable" vào bất kỳ thư mục nào. Tôi cũng không muốn yêu cầu thêm thư mục này vào đường dẫn.
Nếu tôi chỉ xây dựng DLL theo cách thông thường, Windows sẽ từ chối tải tệp DLL vì nó không thể tìm thấy tệp DLL bên cạnh quy trình hiện tại.
Có tùy chọn nào tốt để giúp Windows định vị tệp DLL không?
Để trả lời một số câu hỏi:
- Các DLL được viết bằng C++.
- Các DLL bổ sung là QT-dlls.
- Tôi muốn đặt các tệp DLL phụ trong cùng thư mục với plugin DLL của tôi. Tôi có thể lấy tên của thư mục đó từ
GetModuleFileName
. - Ứng dụng là Firefox, DLL là một mô-đun bảo mật PKCS # 11.
- Ứng dụng tải tệp DLL bằng đường dẫn đầy đủ tới DLL (người dùng cung cấp nó khi cài đặt plugin).
- Yêu cầu các tệp DLL được đặt trong System32 hoặc bên cạnh ứng dụng sẽ hoạt động, nhưng hơi lộn xộn một chút và có thể gây ra sự cố với trình gỡ cài đặt.
LoadLibrary
vàGetProcAddress
sẽ hoạt động, nhưng thực sự không khả thi trong trường hợp của tôi. Tôi đang sử dụng hàng trăm, nếu không phải hàng ngàn, phương pháp trong các DLL khác. Tôi thực sự cần phải sử dụng các thư viện nhập khẩu.
Tôi đã nghĩ đến việc sử dụng các tệp dll chậm trễ kết hợp với SetDllDirectory
trong DllMain. Có ai đã thử bất cứ điều gì như thế này?
Bạn đang sử dụng công nghệ nào? .mạng lưới? –
Tiền đề của bạn không có ý nghĩa và bị hỏng. –
Bạn luôn có thể đặt các dll trong thư mục System32 ... – Kryten