устранение ошибок ссылок для __imp__open и других функций с аналогичными именами с использованием Microsoft Visual C ++ 6.0 - PullRequest
1 голос
/ 18 февраля 2011

Подобные ошибки иногда возникают при компиляции C ++ с использованием Microsoft Visual C ++ 6.0:

error LNK2001: unresolved external symbol __imp__close
error LNK2001: unresolved external symbol __imp__read
error LNK2001: unresolved external symbol __imp__lseek
error LNK2001: unresolved external symbol __imp__open

Мое исправление, которое я обнаружил после долгого поиска в Google безрезультатно, таково:

НЕ отключайте языковые расширения.В диалоговом окне «Параметры проекта» на вкладке C / C ++ убедитесь, что флажок «Отключить языковые расширения» не установлен.

Функции close, read, lseek, open и т. Д. Не являются стандартными частямибиблиотеки C и объявления пропускаются путем условной компиляции с использованием #if !__STDC__ в <io.h>.Это происходит, если вы отключите языковые расширения.

1 Ответ

4 голосов
/ 02 апреля 2011

Ответ заключается в том, что префикс __imp ссылается на заглушки функций в библиотеке OBJ для версии DLL CRT. Это означает, что ваши параметры компоновщика несовместимы с вашими параметрами компилятора (для компоновщика установлен статический CRT или нет CRT, а для компилятора установлен динамический CRT).

В вашем случае это не библиотека CRT, а другая библиотека, но та же идея.

...