2009-03-25 1 views
0

У меня есть проект Qt, который я имел отладки консоли отображается в то время как я развиваю, я о том, чтобы отправить продукт я удалил команду QMAKE консоли: CONFIG + = консольЧто мне недостает из моих переменных среды для моего компоновщика сбой с LNK1181?

Однако, когда я делаю что я получить следующее сообщение об ошибке:

link /LIBPATH:"c:\Qt\4.5.0\lib" /NOLOGO /INCREMENTAL:NO /LTCG /MANIFEST /MANIFESTFILE:"./_obj/win32\Lynx.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /VERSION:4.00 /OUT:bin\win32\Lynx.exe @C:\DOCUME~1\hannentp\LOCALS~1\Temp\nm1C9.tmp 
link_.exe /LIBPATH:c:\Qt\4.5.0\lib /NOLOGO /INCREMENTAL:NO /LTCG /MANIFEST /MANIFESTFILE:./_obj/win32\Lynx.intermediate.manifest /SUBSYSTEM:WINDOWS /MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*' /VERSION:4.00 /OUT:bin\win32\Lynx.exe @C:\DOCUME~1\hannentp\LOCALS~1\Temp\nm1C9.tmp~ 
LINK_ : fatal error LNK1181: cannot open input file 'name='Microsoft.Windows.Common-Controls'' 
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\Bin\link.EXE"' : return code '0x49d' 
Stop. 

Я думаю, что Lib путь отсутствует, однако у меня есть большое количество установки переменных окружения и уже работает. Кто-нибудь видел это и знал местоположение Microsoft.Windows.Common-Controls?

Также я запускаю это из buildbot, поэтому IDE VS2008 на самом деле не где-то, где мне нужна помощь.

+0

Итак, #pragma в общем заголовке, как предлагается здесь (http://social.microsoft.com/Forums/en-US/vcgeneral/thread/fd23824b-f1c7-4aeb-8a5d-238496470aaf/), не работа для вас? – dirkgently

+0

dirkgently, нет, к сожалению, –

+0

Кто-то, пожалуйста, исправьте опечатку в названии – Anton

ответ

3

кажется, что командная строка просто underquoted:

"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" 

На второй строчке, котировки ушли и компоновщик обрабатывает каждое слово в качестве объекта ссылки. Вероятно, вы должны просто добавить кавычки (если бы вы добавили этот аргумент), т.е. начинать и заканчивать "\" (вместо одной цитаты должно быть 3 символа). Похоже, другие источники предполагают, что тоже, поэтому попробуйте поэкспериментировать с этим.

+0

Оказывается, что у меня был link.exe и link_.exe, когда я переместил link.exe в одну сторону и переименовал файл link_.exe, он отлично работал. Не знаю, почему, но задал еще один вопрос. –

0

У меня создалось впечатление, что бесплатная версия Qt строится только с Mingw, а не с Visual Studio. Если вы используете бесплатную версию Qt, это может быть проблемой. Если вы не знакомы с Mingw, его инструментальная цепочка компилятора GCC настраивается для использования под окнами с их .lib-файлами для различных конкретных библиотек Windows.

+0

Я использую коммерческую версию. –

+1

Бесплатная версия Qt может быть построена с помощью Visual Studio. Вам просто нужно создать его самостоятельно, в то время как предварительно скомпилированная версия Mingw предоставляется компанией Nokia. – Paul

0

Из того, что я нашел на сайте Microsoft, Comctl32.dll - это библиотека, в которой вы должны найти и добавить свой путь к своей среде сборки. Посмотрите, работает ли это.

1

Не уверен, если вы сделали какой-либо дальнейший прогресс по этой проблеме.

У меня была очень похожая ошибка, но с msvc2005 (не IDE). У меня нет экземпляров link_.exe, поэтому я не могу проверить ваше исправление.

Когда я включена консоль (CONFIG + = консольный), ему не удалось связать в связи с другой проблемой - не может найти точку входа:

Fatal Error LNK1561: Entry Point Must Be Defined 

Я случайно нашел http://support.microsoft.com/kb/140597 , который говорит о обратный слэш символов, считается, что для msvc 4 и был исправлен позже. Я проверил свой код, и у меня есть трейлинг-карты, когда указано LIBPATH в .pro-файле. Я исправил их и получил возможность скомпилировать (CONFIG + = console). Теперь я убрала возможность, и имеющей разную, но несколько логической задачу:

MSVCRT.lib(crtexew.obj) : error LNK2001: unresolved external symbol [email protected] 
app.exe : fatal error LNK1120: 1 unresolved externals 

Глядя на вашем выводе NMake, мне интересно, если смешивание вперед и обратный слэш в

/MANIFESTFILE:"./_obj/win32\Lynx.intermediate.manifest" 

причиняя эту проблему. Хотя это может быть что-то другое.

Примечание. У меня также есть CONFIG -= embed_manifest_exe в моем файле .pro. Мой NMAKE из выглядит следующим образом:

link /LIBPATH:"c:\Apps\boost\boost_1_38\lib" /NOLOGO /INCREMENTAL:NO /LTCG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /OUT:valueForSba.exe @C:\DOCUME~1\LOCALS~1\Temp\nm398.tmp 
Creating library app.lib and object app.exp 
MSVCRT.lib(crtexew.obj) : error LNK2001: unresolved external symbol [email protected] 
app.exe : fatal error LNK1120: 1 unresolved externals 

Я также не использовать какие-либо Qt классов в этом проекте, и использовать только QMAKE, чтобы получить Makefile. (qmake из 4.5.1 коммерческая версия)

0

У меня была та же проблема. Оказалось, что этот ПК имеет две разные версии MSVC (7.1 и 8.0). Хотя SDK построен для 8.0, он был выбран для 7.1 в QtCreator Tools-> Options-> Qt4-> Qt4 Versions. Поэтому я переключил его на версию 8.0, и теперь он отлично работает.

Смежные вопросы