Что может связать с целью воздействия CMake?

Если я хорошо понимаю, инструкция mov загрузила 32-битное представление того, что было по адресу 0x80486b2, в адрес, на который указывает указатель стека ... Правильно ли это?

Нет. Инструкция

mov dword [esp], 0x80486b2

копирует непосредственное значение 0x80486B2 на адрес, на который указывает регистр ESP. Это место является первым параметром, переданным функции scanf.

Итак, в основном мы получаем, что mov только что перемещает данные из памяти в другое место памяти, [. ..]

No. Команда перемещает сразу 32-битное значение в ячейку памяти. Подпись команды MOV в этом случае:

MOV r/m32, imm32        Move imm32 to r/m32.

Значение 0x80486b2 записывается в адрес памяти DWORD, на который указывает регистр ESP.

Команда mov dword [esp + 0x4], eax передает второй параметр из EAX в scanf.

-1
задан tjwrona1992 18 January 2019 в 20:05
поделиться

1 ответ

Тот факт, что перед связыванием происходит сбой, означает, что команда target_link_libraries в CMake фактически влияет не только на связывание. Это также влияет на компиляцию.

Да, это правда, что новые каталоги добавления добавляются, когда вы связываете с библиотекой target вместо файла библиотеки . Вот почему этот подход называется «современным» - один вызов target_link_libraries выполняет все, что необходимо для использования библиотеки (в вашем случае Boost).

Причиной неудачи с «современным» подходом может быть то, что «настоящие» заголовки Boost конфликтуют с другими заголовками, которые вы используете. Вы можете обнаружить это с помощью проверки цепочки включаемых файлов в сообщении об ошибке.

0
ответ дан Tsyvarev 18 January 2019 в 20:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: