Использование Microsoft Detours - куча неопределенных

Я попытался найти ошибки компилятора в Google, но он даже не дал результата поиска. Итак, я немного потерялся здесь. Я только что скачал Microsoft Detours, собрал его и получил из него файлы detours.h, detours.lib, detoured.lib и detoured.dll. Затем, пытаясь использовать его в своем собственном проекте, я получаю следующие ошибки:

http://friendpaste.com/4egvgn7lOeIVOGkbROCnOC

Это исходный код, а внизу ошибки компилятора. Если бы кто-то мог прояснить, что вызывает эти проблемы, это было бы полезно. Спасибо! ^_^


person Gogeta70    schedule 08.11.2010    source источник


Ответы (2)


Это не ошибки компилятора, это ошибки компоновщика. Что-то очень не работает в том, как вы это строите, вы связываете неправильную версию CRT. Даже операторы new и delete не определены, что говорит о том, что вы вообще не связываете CRT. Очень сложно сделать, когда вы используете компилятор MSVC. Задокументируйте, как вы это строите, если это не помогло.

person Hans Passant    schedule 08.11.2010
comment
Что ж, я использовал nmake (визуальный cpp) для его сборки, но я использую code::blocks, так как мне не очень нравится msvc... Кроме того, если я закомментирую включение detours.h и все вызовы функций обхода , строит нормально. - person Gogeta70; 08.11.2010
comment
Эх, я имел в виду, что использовал nmake для создания кода обхода, но я использую code::blocks и mingw для сборки своего проекта. И нет, все остальные вызовы Windows API компилируются и работают нормально... - person Gogeta70; 08.11.2010
comment
Смешивание и сопоставление не могут работать. Создавайте все с помощью одних и тех же инструментов. - person Hans Passant; 08.11.2010
comment
Я бы сказал, что это даже хуже, чем отсутствие new и delete - вы можете пропустить это, скомпилировав как C (технически, код C++ из-за PVOID&, но он тривиально переписан). Однако файлы cookie безопасности и обработка SE являются более фундаментальными. MSVC использует их и в C. - person MSalters; 08.11.2010
comment
@ Gogeta70: все остальные вызовы Windows API компилируются нормально - с другой стороны, вы ошибаетесь. Эти отсутствующие функции не являются частью Windows API, они являются частью библиотеки CRT MSVC. - person MSalters; 08.11.2010

Проверьте свой компилятор и его параметры. Вы должны использовать то же самое, что и обходные пути. Вероятно, вам следует установить /EHa и /GS в настройках генерации кода компилятора.

person Abyx    schedule 08.11.2010