Có cách nào để tải động và gọi các hàm từ các DLL động trong D? Tôi muốn chương trình của tôi có thể tải các trình bổ sung khi khởi động và có lẽ cả khi đang chạy.Đang tải Plugins (DLL) on-the-fly
Trả lời
Tùy thuộc vào mức độ động mà bạn muốn nhận. Nếu bạn muốn tự động tải một dll và chạy một số chức năng được xác định trước, có một wrapper rất đẹp bởi Wei Li here. Nhờ sức mạnh của mẫu, nó cho phép bạn làm những việc như sau:
// define functions
alias Symbol!("MessageBoxW", int function(HWND, LPCWSTR, LPCWSTR, UINT)) mbw;
alias Symbol!("MessageBoxA", int function(HWND, LPCSTR, LPCSTR, UINT)) mba;
// load dll
auto dll = new Module!("User32.dll", mbw, mba);
// call functions
dll.MessageBoxW(null, "Hello! DLL! ", "Hello from MessageBoxW", MB_OK);
dll.MessageBoxA(null, "Hello! DLL! ", "Hello from MessageBoxA", MB_OK);
Mã này là D1. Đối với D2, bạn phải thay thế char[]
bằng string
, sử dụng toStringz()
và có thể xóa scope
. Chỉnh sửa:my D2 port của mã này có thể hữu ích cho những người khác tìm câu hỏi này.
Tôi ước mình có thêm 1 điểm +1. Điều này thật đúng với gì mà tôi đã tìm kiếm. Cảm ơn! –
@Timothy: Rất vui được. Đối với tôi, mã là một ví dụ tốt về số lượng bạn có thể đạt được với một vài dòng mã sử dụng các mẫu và các mixin. Nó gần như cảm thấy như Python. – stephan
Tôi nhận ra đây là một vài tháng tuổi, nhưng cảm ơn một tấn cho bản cập nhật D 2.0! Tôi cũng ước rằng tôi có nhiều upvotes hơn để phát! –
- 1. Powershell dll đang tải
- 2. Đang tải DLL trong Java - Eclipse - JNI
- 3. Đang tải DLL từ một vị trí trong bộ nhớ
- 4. Plugins Rails
- 5. Plugins lõi Motodev
- 6. Rails Search Plugins & Solutions
- 7. Tự động tải một DLL
- 8. C++: Vấn đề tải Dll
- 9. EEFileLoadException Khi tải C++ DLL trong DLL được quản lý
- 10. không thể tải php5apache2_2.dll
- 11. Ruby Geolocation Gem/Plugins
- 12. CKEditor Custom Plugins Nút
- 13. "Lỗi khi tải DLL" khi biên dịch DLL trong VB6
- 14. yêu cầu js jquery plugins
- 15. scipy.optimize lỗi tải dll trên Windows 8
- 16. Tải một DLL nhiều hơn một lần?
- 17. WinSxS không tải được VC++ DLL
- 18. Plugins Cordova/PhoneGap cho Blackberry
- 19. Sự cố khi tải git2.dll?
- 20. Đang tải XAML khi đang chạy?
- 21. ASLR có làm chậm tải Dll không?
- 22. studio android không tải được jvm dll
- 23. C++ DLL không tải xuống với AppDomain
- 24. Cách tải DLL từ kho trung tâm
- 25. Lớp tải chi tiết Java đang tải
- 26. plugins maven thử nghiệm đơn vị
- 27. ViM: minibufexpl so với bufexplorer plugins
- 28. Phonegap cho phép Android, config.xml và plugins
- 29. Plugins dành cho Chrome trên iPhone
- 30. plugins oh-my-zsh không hoạt động
Có. Đây là một tài liệu tham khảo nhanh: http://www.digitalmars.com/d/2.0/dll.html –
Đó là những gì tôi đã sợ ... về cơ bản chúng tôi đang mắc kẹt với việc sử dụng phương pháp C của việc lấy địa chỉ proc và đi từ đó. Không khủng khiếp, tôi giả định, vì tôi có thể bọc tất cả các đối tượng plugin của mình thành một "nhà máy chính", nhưng không tối ưu. –