Есть ли способ динамически загружать и вызывать функции из DLL динамически в D? Я хочу, чтобы моя программа могла загружать плагины при запуске и, возможно, «на лету».Загрузка плагинов (DLL) на лету
ответ
Это зависит от динамичности, которую вы хотите получить. Если вы хотите динамически загружать dll и запускать некоторые предопределенные функции, у Wei Li here есть очень приятная обертка. Благодаря силе шаблонов он позволяет делать такие вещи:
// 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);
Код D1. Для D2 вам необходимо заменить char[]
на string
, использовать toStringz()
и возможно удалить scope
. Редактировать:my D2 port этого кода могут быть полезными другим лицам, которые могут найти этот вопрос.
Хотелось бы, чтобы у меня было больше модов +1 очков. Это именно то, что я искал. Благодаря! –
@ Тимоти: Рад, что это помогло. Для меня код - хороший пример того, насколько вы можете достичь с помощью пары строк кода с использованием шаблонов и микшинов. Это почти похоже на Python. – stephan
Я понимаю, что это несколько месяцев, но спасибо за тонну за обновление D 2.0! Я также хочу, чтобы у меня было больше рук, чтобы раздавать! –
- 1. Загрузка видео на лету
- 2. Установка плагинов в Android на лету
- 3. Perl: Загрузка модулей на лету
- 4. DLL плагинов, которые зависят от других DLL.
- 5. Загрузка сборок в виде плагинов
- 6. Загрузка плагинов Require.js
- 7. Загрузка файла Azure Blob на лету
- 8. Загрузка кода загрузки веб-пакета на лету
- 9. Rails 3.1: Загрузка изображения на лету
- 10. Загрузка пользовательского управления сервером «на лету»
- 11. Загрузка зашифрованного apk и дешифрование «на лету»
- 12. Загрузка Amazon MP3-виджета на лету
- 13. Расширение Chrome: загрузка/экспорт содержимого «на лету»
- 14. Загрузка загружаемого изображения в CDN на лету
- 15. загрузка стандартных qt-плагинов. MANUALLY и динамически
- 16. Использование плагинов dll с Xamarin
- 17. Загрузка DLL на сервер jboss
- 18. Загрузка DLL на Java запустилась
- 19. Загрузка плагинов QML из C++
- 20. Как скомпилировать C# DLL на лету, загрузить и использовать
- 21. Загрузка DLL в wxPython
- 22. Delphi: Ускорение загрузки интерфейсных плагинов (DLL)
- 23. PHPExcel «на лету»?
- 24. Загрузка DLL-файла
- 25. Динамическая загрузка DLL
- 26. Загрузка DLL в GAC
- 27. Загрузка и защита .NET Dynamic DLL
- 28. MVC - Загрузка DLL программно
- 29. Как создать dll/exe на лету в C#?
- 30. Явная загрузка DLL
Да. Вот краткая ссылка: http://www.digitalmars.com/d/2.0/dll.html –
Вот чего я боялся ... в основном мы застряли с использованием метода C получения адреса проса и перехода от там. Не страшно, я полагаю, так как я могу обернуть все мои объекты плагина в «мастер-фабрику», но не оптимально. –