eXeL@B —› Вопросы новичков —› Где находится тело функции в экзешнике? |
Посл.ответ | Сообщение |
|
Создано: 26 августа 2016 11:17 · Поправил: zaichik · Личное сообщение · #1 Друзья! Речь идёт о библиотеке [url=chilkat для mingw]https://www.chilkatsoft.com/downloads_mingw.asp[/url], использую mingw 4.6.2 Качаются как положено 1) Набор хидеров 2) Файл libchilkat-9.5.0.a 2) Файл libchilk_at9.5.0.dll Вот минимальный код: Code:
При компиляции по умолчанию компилятор ругается: Code:
Поэтому в командной строке компилятора добавляем опцию -lchilkat-9.5.0 Code:
Компилится, но ведь я так понимаю тут происходит именно связывание кода программы с кодом *.dll, то есть указание линковщику, в какой *.dll и по какому адресу лежит функция imap.UnlockComponent("Anything for 30-day trial"); И тут происходит необъяснимое. Готовый экзешник и экзешник МНОГО СЛОЖНЕЕ (это я для демонстрации такой маленький написал) работает БЕЗ libchilk_at9.5.0.dll ! То есть её можно переименовать, переместить, удалить... Работать сё равно будет! Так где же лежит код функции imap.UnlockComponent("Anything for 30-day trial")? Можно предположить на худрой конец, что он где-то далеко-далеко в подсоединяемых хидерах, то есть фактически я компилю полностью сырцы. Но это не так, мы ведь видим, что линковщик не может найти тела этой функции и требует опцию -lchilkat-9.5.0 И вполне обходится без libchilk_at9.5.0.dll ! Чудеса какие-то. Может кто-нибудь объяснить? Спасибо, кто откликнется. P.S. Спросил бы на WASMе, но он не работает. Не знаю, как правильно оформить ссылку на chilkat, извините уж. |
|
Создано: 26 августа 2016 11:20 · Личное сообщение · #2 |
|
Создано: 26 августа 2016 11:27 · Личное сообщение · #3 |
|
Создано: 26 августа 2016 11:38 · Личное сообщение · #4 |
|
Создано: 26 августа 2016 11:48 · Личное сообщение · #5 reversecode пишет: тоесть теперь вы начинаете активно гуглить и изучать что такое файлы *.a ? Нет. Дело в том, что я раньше пытался это сделать несколко раз и ничё не находил. Ну как не находил- красивые надписи типа: "Всё о формате файлов *.a только у нас" были. А описания самого формата не было. Но вернёмся к теме. Я так понимаю, вас совсем не удивляет, что тело функции находится не в *.dll; А где тогда? |
|
Создано: 26 августа 2016 11:52 · Поправил: reversecode · Личное сообщение · #6 |
|
Создано: 26 августа 2016 12:05 · Личное сообщение · #7 reversecode пишет: тема вообще не для этого форума, Тема для этого форума. Просто нужно сперва разобраться, где находится функция, которая отвечает за разблокирование библиотеки - (она именно за это и отвечает) Это глобальная цель. А потом и с функцией самой ковыряться. Но я вас понял. Пробел в моих знаниях нашли. День не зря прошёл. Не беспокойтесь больше. Вопрос открыт. |
|
Создано: 26 августа 2016 12:09 · Личное сообщение · #8 какой пробел? .а - это статическая либа, скорей всего. В ней и лежит реализация вашей функции. ----- старый пень | Сообщение посчитали полезным: zaichik |
|
Создано: 26 августа 2016 12:11 · Личное сообщение · #9 |
|
Создано: 26 августа 2016 12:21 · Личное сообщение · #10 reversecode пишет: что нужно делать когда вам показали на ваш пробел ? и намекнули где он А, то есть вы с самого начала предполагали, что код может находиться в файле *.a? Хорош советчик, ничё не скажешь... r_e вон сказал так сказал, без экивоков всяких. | Сообщение посчитали полезным: olia64 |
|
Создано: 26 августа 2016 12:22 · Личное сообщение · #11 |
|
Создано: 26 августа 2016 12:27 · Личное сообщение · #12 |
|
Создано: 26 августа 2016 12:44 · Личное сообщение · #13 |
eXeL@B —› Вопросы новичков —› Где находится тело функции в экзешнике? |
Эта тема закрыта. Ответы больше не принимаются. |