Senpai Опубликовано 18 августа, 2018 Поделиться Опубликовано 18 августа, 2018 Всем привет. В общем, компилирую приложение в visual studio . Если компилить в MT ,то приложение будет работать на других компах и всё нормально, но если взять адрес функции, то мы получим не адрес начала функции, а адрес на прыжок в начало функции.(с MDd такого не происходит, но тогда приложение не работает на других компьютерах) В c++ builder всё нормально, взяв адрес функции, мы попадём сразу в её начало. Спойлер Так в VS с выбранной библиотекой времени выполнения MT Спойлер Вот так в c++ builder Спойлер Ссылка на комментарий Поделиться на другие сайты Поделиться
temtriss Опубликовано 18 августа, 2018 Поделиться Опубликовано 18 августа, 2018 2 часа назад, Senpai сказал: Если компилить в MT ,то приложение будет работать на других компах Так и с MD(release) MDd(debug) будет работать на других компах, просто приложи рантайм библиотеку к приложению msvcrXXX.dll Где XXX версия рантайма Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 18 августа, 2018 Автор Поделиться Опубликовано 18 августа, 2018 28 минут назад, temtriss сказал: Так и с MD(release) MDd(debug) будет работать на других компах, просто приложи рантайм библиотеку к приложению msvcrXXX.dll Где XXX версия рантайма так это, нуу. Не оч как-то таскать с собой dll ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 августа, 2018 Поделиться Опубликовано 19 августа, 2018 7 часов назад, Senpai сказал: Не оч как-то таскать с собой dll Тогда статическая линковка и распухший файл. Да, кстати, файл msvcrXXX.dll присутствует во всех рантаймах. И зачастую эти рантаймы уже установлены. Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 19 августа, 2018 Автор Поделиться Опубликовано 19 августа, 2018 (изменено) 9 часов назад, Xipho сказал: Тогда статическая линковка и распухший файл. Да, кстати, файл msvcrXXX.dll присутствует во всех рантаймах. И зачастую эти рантаймы уже установлены. Но я хочу компилить в MT ,но тогда Цитата если взять адрес функции, то мы получим не адрес начала функции, а адрес на прыжок в начало функции Мб нужно отключить CRT ? И юзать спокойно MDd ? Изменено 19 августа, 2018 пользователем Senpai Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 19 августа, 2018 Автор Поделиться Опубликовано 19 августа, 2018 (изменено) Так, я перепутал. MDd или MT не влияют. Почему по адресу функции находится не код функции, а прыжок на код функции? Изменено 19 августа, 2018 пользователем Senpai Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 20 августа, 2018 Поделиться Опубликовано 20 августа, 2018 18 часов назад, Senpai сказал: Почему по адресу функции находится не код функции, а прыжок на код функции? Потому что не статическая линковка. Я ж говорил. При статической линковке код функции встраивается в код приложения. При динамической - это прыжок на функцию в библиотеке. Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 20 августа, 2018 Автор Поделиться Опубликовано 20 августа, 2018 (изменено) 4 часа назад, Xipho сказал: Потому что не статическая линковка. Я ж говорил. При статической линковке код функции встраивается в код приложения. При динамической - это прыжок на функцию в библиотеке. Так нет. Я же сказал, что не влияет. Я поставил статическую, и всё равно по адресу функции идёт не код функции, а прыжок на неё((компилИЛ в конфигурации DEBUG) Поставил релиз и всё норм Изменено 20 августа, 2018 пользователем Senpai Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения