![]() |
|
|
![]()
|
|
| jonie |
|
||||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
итак, имеем : две EXE модуля, один из которых экспортирует а другой соотв. импортирует функцию (оба проекта обычные, консольные)
вроде бы все ок. компилируется. В импортной секции второго модуля значится ссылка на первый модуль, функцию foo():
в экспортной секции первого экспорт foo():
но вот реализация foo() в первом модуле мягко говоря странная (данные студии при отладке второго (запускающего foo()) модуля)... точнее даже не реализация, а то как это "проецируется" чтоли (хз как это звать):
при том что собсвенно в модуле1 (экспортирующий foo()) все должно быть ОК:
собственно вопросы: что за чудо-трава, и как ее курить ?..... откуда такой код получается, и кто виноват (подозреваю что Я) -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||||||||
|
|||||||||||||
| Smarts |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.4.2007 Репутация: нет Всего: 2 |
||||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
dll не интересно, с dll все могут ....
вообще можно както выковырять и из exe , вопрос КАК собственно и стал основой темы... углядел такое строение exe-шки у ACDSee7...... ---- export "C" помогает, конечно и загрузка динамическая, но это не наш метод.... Это сообщение отредактировал(а) jonie - 13.5.2007, 19:47 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Smarts |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.4.2007 Репутация: нет Всего: 2 |
При подключении .lib ты используешь раннее связывание и в самом lib файле нет твоих функций, а только информация для загрузки библиотеки при запуске программы... Попробуй без подключения lib (позднее связывание - загрузка во время выполнения):
А вообще - смысл загрузки из ехе? Ведь не зря же пишем #define DllImport __declspec( dllimport ) Это сообщение отредактировал(а) Smarts - 13.5.2007, 22:33 |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
с динамикой умирает удобство такое как перегрузка... это раз, во вторых не работает , это два.... код лучше при выполнении не становится, хотя ошибок "на уровне winAPI (проверки на нули возрата)" нет... ---- ОК. расширим вопрос: 1) зачем в exe есть экспорт 2)если уж он есть, то как же так исхитриться его использовать?) если кого заинтересует бросаю в архиве исходник решения чтоб не писать самим) ~3 kB Присоединённый файл ( Кол-во скачиваний: 1 )
testDLL.7z 3,24 Kb-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Smarts |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.4.2007 Репутация: нет Всего: 2 |
Если динамически не работает, то думаю и статически не пройдет (первый пост
А раздел экспорта есть, так как формат у ехе и dll один и тот же - Portable Executeable (PE) |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
ок) но что насчет 2)если уж он есть, то как же так исхитриться его использовать?) ? и собственно я приводил пример acdsee7.exe .... накой то черт они там сделали экспорт из ехе-ки.....
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
При динамической загрузке (LoadLibrary + GetProcAddress) должно вроде работать. Я когда-то делала.
Только, как мне помнится дело было так: EXE был таки один, и он зависел от некой DLL. И вот внутри этой DLL приспичило получить достук к одной из функций EXE. Вот тогда-то, чтобы не редизайнить сильно, функцию из EXE экспортировали, и в DLL через GetProcAddress использовали. Доступ к EXE получали через LoadLibrary (вроде). Потом, конечно, это кривье переделали. -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |