ошибка LNK2005: _sprintf уже определен в ntdll.lib (ntdll.dll) - PullRequest
3 голосов
/ 25 января 2011

Я ссылаюсь на ntdll.lib для использования ZwQueryInformationProcess и использую многопоточную библиотеку времени выполнения.

Кажется, что ntdll определяет некоторые функции crt.Поэтому, когда я ссылаюсь на него, а также использую библиотеку времени выполнения, я получаю ошибки компоновщика.

Могу ли я заставить компоновщик использовать функции crt и игнорировать символы ntdll, чтобы избавиться от ошибки?Или как-то еще решить эту ошибку.

Я знаю, что документация ZwQueryInformationProcess предлагает динамическую загрузку, но она используется в статической библиотеке, на которую мой основной проект также ссылается, и это работало нормально долгое время,Я бы предпочел не менять его.

Спасибо.

Я нашел несколько обсуждений по этому поводу на других сайтах, например: http://www.codeguru.com/forum/archive/index.php/t-414274.html, но ничего не виделэто, кажется, обеспечивает хорошее решение.Есть некоторые упоминания об изменении порядка ссылок, но я не вижу, как изменить порядок, в котором библиотека времени выполнения связывается через настройки проекта.

1 Ответ

3 голосов
/ 25 января 2011

Изменение порядка ссылок, похоже, решает эту проблему.Чтобы изменить порядок автоматически связанных библиотек, необходимо игнорировать их, добавив «Игнорировать определенную библиотеку», а затем повторно добавить их в «Дополнительные зависимости» в том порядке, в котором вы хотите, чтобы они были связаны.Сообщение об ошибке было таким:

1>libcmt.lib(wcstol.obj) : error LNK2005: _wcstoul already defined in ntdll.lib(ntdll.dll)

Итак, я добавил libcmt.lib как проигнорированный, а также поместил его в начало дополнительных зависимостей.Это вызвало еще одну ошибку, за которой я следовал с теми же шагами.Итак, свойства проекта в итоге выглядели так (ntdll.lib находится в конце дополнительных зависимостей):

Project properties screenshot

Я также обнаружил добавление / verbose: lib к компоновщику-> Командная строка -> Дополнительные параметры, которые будут полезны, чтобы вы могли точно видеть, какие библиотеки связаны и в каком порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...