![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Есть программа, к ней в процессе работы подключаются dll-библиотеки (LoadLibrary). Столкнулся с проблемой: как использовать функционал из exe в dll. То есть как dll-плагину, к примеру, попросить приложение свернуть окно, и т.п.?
В Linux все решалось флагом -rdynamic, но в Винде даже скомпилировать dll нельзя - ругается на unresolved external. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 6 Всего: 135 |
не очень сведущь в Linux, поэтому просьба: объясните, пожалуйста, как *.so-шник, скомпилированный и слинкованный в отдельный модуль при помощи одного ключа компидяции узнаёт о функциях приложения, которое его загрузило ? и ещё вопрос: насколько я знаю (может и ошибаюсь, конечно) в Винде нет встроенного компилятора, как почти во всех сборках Линукса, поэтому объясните как Вы в Венде компилируете dll-кую Sorry, что задаю вопросы в Вашей теме, но это для того, чтобы попытаться понять, как помочь Это сообщение отредактировал(а) borisbn - 29.3.2011, 23:24 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
стандартное решение - выделить общий функционал из exe в отдельную DLL и использовать ее в обоих модулях -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Я так думал, что 99% людей под виндой компилируют в VS, как и 99% в Линуксе компилируют через g++. В линуксе совершенно спокойно можно скомпилировать библиотеку даже если она не находит каких-то реализаций. Затем в процессе работы приложения после подгрузки библиотеки эти реализации как-то находятся. Я не в курсе, но работает.
Пытался сделать отдельную библиотеку, но если бы можно было выделить как-то область, используемую в DLL. А так придется собрать прямо все приложение в DLL, а в exe запихнуть только main. Да и столкнулся с ошибками компиляции, что std::-подобные объекты должны быть тоже экспортированы и т.п. Добавлено через 2 минуты и 6 секунд Кстати, получилось в EXE проэкспортировать некоторые функции, рядом с exe появился lib, который прописал всем библиотекам. Работает, но не знаю хорошее ли это решение. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Нормальное, exe от DLL не сильно отличается - из обоих можно экспортировать функции. Я, правда, обычно динамически (т.к. через GetProcAddress) делаю, никаких проблем. -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |