| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Использование классов exe из DLL |
| Автор: Anton Vatchenko 29.3.2011, 20:09 |
| Есть программа, к ней в процессе работы подключаются dll-библиотеки (LoadLibrary). Столкнулся с проблемой: как использовать функционал из exe в dll. То есть как dll-плагину, к примеру, попросить приложение свернуть окно, и т.п.? В Linux все решалось флагом -rdynamic, но в Винде даже скомпилировать dll нельзя - ругается на unresolved external. |
| Автор: GremlinProg 30.3.2011, 06:25 |
стандартное решение - выделить общий функционал из exe в отдельную DLL и использовать ее в обоих модулях |
| Автор: Anton Vatchenko 30.3.2011, 07:19 |
| Я так думал, что 99% людей под виндой компилируют в VS, как и 99% в Линуксе компилируют через g++. В линуксе совершенно спокойно можно скомпилировать библиотеку даже если она не находит каких-то реализаций. Затем в процессе работы приложения после подгрузки библиотеки эти реализации как-то находятся. Я не в курсе, но работает. Пытался сделать отдельную библиотеку, но если бы можно было выделить как-то область, используемую в DLL. А так придется собрать прямо все приложение в DLL, а в exe запихнуть только main. Да и столкнулся с ошибками компиляции, что std::-подобные объекты должны быть тоже экспортированы и т.п. Добавлено через 2 минуты и 6 секунд Кстати, получилось в EXE проэкспортировать некоторые функции, рядом с exe появился lib, который прописал всем библиотекам. Работает, но не знаю хорошее ли это решение. |
| Автор: Earnest 31.3.2011, 18:00 | ||
Нормальное, exe от DLL не сильно отличается - из обоих можно экспортировать функции. Я, правда, обычно динамически (т.к. через GetProcAddress) делаю, никаких проблем. |