| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Проблемы при компиляции (путь к линкеру) |
| Автор: DrGrey 16.10.2006, 11:39 | ||
| Здравствуйте, уважаемые Кодеры. У меня следующая проблема: Я переустановил систему (Microsoft Windows XP/2002 Professional 5.01.2600 (Service Pack 2)) и поставил Microsoft Visual C++ 6.0 Enterprise Edition (я им почти не пользовался раньше т.к. работал в Borland C++ V5.02). При компиляции любого проекта выдает следующее:
Поставил Microsoft Visual Studio .NET 2003 – то же самое. И ведь знаю что проблема в указании пути к линкеру, а сделать ничего не могу. Я перепробовал все: менял пути, ставил в другую директорию, удалял пробелы из пути, задавал пути в стиле ДОС, снимал с папок атрибут только для чтения, все напрасно. Может быть я не так или не там указываю пути? Буду очень признателен за любой совет. |
| Автор: Sartorius 16.10.2006, 11:51 |
| Объектник на самом деле существует в этой папке? |
| Автор: DrGrey 16.10.2006, 15:06 |
| Нет! Скорее всго имеется в виду что-то в "Program Files". |
| Автор: Любитель 19.10.2006, 15:43 |
| А в какой папке создавался проект? |
| Автор: Rickert 20.10.2006, 01:23 |
Что где имеется ввиду? В какой папке создал проект. У тебя видимо опции криво проставлены, менял чего? |
| Автор: DrGrey 20.10.2006, 20:50 |
| Сначала проект создавался в папке: C:\Program Files\Microsoft Visual Studio\MyProjects\WinProg; А потом я скопировал его в корень, без пробелов: C:\WinProg; Опции не менял ни в одном пакете, но скорее всего это они. Подскажите, пожалуйста, по подробнее, как и где, правильно, прописать путь к линкеру в Microsoft Visual C++ 6.0 Enterprise Edition или Microsoft Visual Studio .NET 2003. P.S. Не компилится даже элементарный "Hello, World!"!!! |
| Автор: Rickert 21.10.2006, 04:00 |
| DrGrey, не парься, а просто заведи папку, где будешь вести проекты свои и пресоздай в ней проект, исходники перекинь и переподключи. |
| Автор: DrGrey 21.10.2006, 21:33 |
| Уважаемый, Rickert, я бы с удовольствием, но ведь эффект тот же – то есть: LINK : fatal error LNK1104: cannot open file "C:\Program.obj" Какой бы проект ни компилил! В кокой бы папке ни компилил и каким бы пакетом… Help me, please!!! |
| Автор: Dreamer_0x01 23.10.2006, 00:57 |
| Так, а в переменных окружения TEMP и TMP случаем нет русскоязычных букв? (Свойства системы-дополнительно-переменные среды). |
| Автор: Rickert 23.10.2006, 03:29 |
| DrGrey, твой компилятор ищет промежуточный файл компиляции не в папке с проектом, а на диске C:\, непосредственно в его корне. Допустим ты создал проект в папке "C:\My Coding\Programms\1". Загляни в туда и ищи там папку "Debug"(если компилишь в дебуге, если в релизе, то соответственно "Release") и смотри: есть ли там файлы *.obj. Если они там, то идём в "Project -> <название проекта> Properties" в главном меню. Там: в General смотрим опцию "Intermediate Directory" - должна быть "Debug", если ты в режиме дебага, и "Release", если ты в режиме релиза; затем там же в опциях ищи "C++\Output Files" свойство "Object file name" - должно быть "$(IntDir)/". Пока проверь это. |
| Автор: DrGrey 25.10.2006, 16:29 |
| Приветствую! Простите, что долго не выходил на связь. Итак, по порядку. Уважаемый, Dreamer_0x01, я пришел к выводу, что Вы близки к истине и причина проблемы связана с переменными окружения, но не с кириллицей (ниже скажу почему). Если Вы имели ввиду переменные среды пользователя, то тут ситуация такая: TEMP=%USERPROFILE%\Local Settings\Temp TMP=%USERPROFILE%\Local Settings\Temp Если системные переменные, то: TEMP=%SystemRoot%\TEMP TMP=%SystemRoot%\TEMP Продолжение ниже… Уважаемый, Rickert, меня не покидает мысль о том что и Ваша версия имеет все шансы стать Джек-потом, но пока в указанных Вами местах проблем не обнаружено (все выглядит так как Вы сказали). Надеюсь, на дальнейшую поддержку и буду признателен за любой совет. Теперь о главном (о моих новых догадках и проблемах). Немного истории… У меня стоял Borland C++ v5.02, потом я поставил Microsoft Visual C++ 6.0 Enterprise Edition (не удаляя, работающий до сих пор, Borland) и Visual не заработал. Затем, ничего не удаляя, я поставил Microsoft Visual Studio .NET 2003 в отдельный каталог (C:\MVSNET23\) в корне диска С:, но и он не пашет. Догадки… Среди переменных среды пользователя я нашел также такие: Include= C:\MVSNET23\SDK\v1.1\include\;C:\Program Files\Microsoft Visual Studio\VC98\atl\include;C:\Program Files\Microsoft Visual Studio\VC98\mfc\include;C:\Program Files\Microsoft Visual Studio\VC98\include lib= C:\MVSNET23\SDK\v1.1\Lib\;C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;C:\Program Files\Microsoft Visual Studio\VC98\lib MSDevDir= C:\Program Files\Microsoft Visual Studio\Common\MSDev98 Path= C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin;C:\Program Files\Borland\BC5\BIN; А среди системных такие: INCLUDE= C:\MVSNET23\SDK\v1.1\include\ LIB= C:\MVSNET23\SDK\v1.1\Lib\ VS71COMNTOOLS= C:\MVSNET23\Common7\Tools\ При этом файл AUTOEXEC.BAT содержит следующее: @echo off set path=%path%;C:\Program Files\BORLAND\BC5\BIN;C:\Program Files\BORLAND\BC5\LIB;C:\Tasm set include=C:\Program Files\BORLAND\BC5\INCLUDE set lib=C:\Program Files\BORLAND\BC5\LIB set link=C:\Program Files\BORLAND\BC5\BIN Вопрос – не в этой ли путанице проблема? Подскажите, пожалуйста, где можно почитать о переменных окружения (у меня с этим очень слабенько Проблема… Теперь я не могу найти как удалить Microsoft Visual C++ 6.0 да и Visual Studio .NET 2003 тоже! Я просто болел недавно P.S. Помогите, кто чем может!!! |
| Автор: Dreamer_0x01 25.10.2006, 17:57 |
| Попробуйте переменные окружения TEMP и TMP выставить четко в виде какого-то пути (например TMP=c:\TEMP\TMP). Потому что %USERPROFILE% в этих переменных даст вам что-то вида "C:\Document And Settings\Вася Пупкин". |
| Автор: DrGrey 25.10.2006, 22:34 | ||||
| Я забыл сказать, что указанные выше значения видны в окне изменения значений (появляющемся при двойном щелчке на переменной), а в окне просмотра указано следующее: Переменные среды пользователя: TEMP=C:\Documents and Settings\Main\Local Settings\Temp TMP=C:\Documents and Settings\Main\Local Settings\Temp Системные переменные: TEMP=C:\WINDOWS\Temp TMP=C:\WINDOWS\Temp На всякий случай сменил – по нулям! P.S. Да, забыл сказать, при компиляции (но не билде) Visual C++ 6.0 начал выдавать следующее:
А при билде снова:
|
| Автор: Dreamer_0x01 27.10.2006, 07:44 |
| Так, насчет файла pch. Попробуй: 1. удалить его. Не бойся, он создастся снова. 2. В свой код первой строкой добавить запись вида #unclude "stdafx.h". Если она там есть, то наоборот, скомпилировать без нее. 3. в настройках компиляции попробовать убрать что-то вида "создавать файл препроцессора pch", дословно не помню, как там называется, так как сижу за чужим компом и студии тут нету, но что-то подобное там есть. И вопрос еще - так происходит при компиляции абсолютно любого проекта? Иными словами, проверку надо начинать с абсолютно голого проекта, состоящего из минимума файлов и только функции main(). И вопрос еще - если не пытаться строить проект сразу в одно действие, а компилировать каждый файл отдельно, он компилируется, или тоже чего-то не находит? |
| Автор: doomik 27.10.2006, 08:21 | ||
Помну такую ошибку, у меня она тоже была, в опциях надо отключить "Using precompiled headers" кажется так называется, к сожелению у меня Microsoft Visual C++ не уcтановлен точно сказать не могу. Tools --> Options --> [не помну] --> Будет можна выбрать из списка, выбираеш C\C++ --> И ставиш галку на "Not using precompiled headers" Примерно так, но это из моей памяти |
| Автор: DrGrey 12.11.2006, 00:31 |
| Нашел!!! Проблема была в AUTOEXEC.BAT! Оказывается (как сказал мой знакомый кодер профессионал, после 2-х часов проведенных за поиском этой проблемы) Борланд любит придумывать не придуманное и изобретать велосипед. Привожу пример AUTOEXEC.BAT до: @echo off set path=%path%;C:\Program Files\BORLAND\BC5\BIN;C:\Program Files\BORLAND\BC5\LIB;C:\Tasm set include=C:\Program Files\BORLAND\BC5\INCLUDE set lib=C:\Program Files\BORLAND\BC5\LIB set link=C:\Program Files\BORLAND\BC5\BIN и после: @echo off rem set path=%path%;C:\Program Files\BORLAND\BC5\BIN;C:\Program Files\BORLAND\BC5\LIB;C:\Tasm rem set include=C:\Program Files\BORLAND\BC5\INCLUDE rem set lib=C:\Program Files\BORLAND\BC5\LIB rem set link=C:\Program Files\BORLAND\BC5\BIN Еще раз прошу прощения за глупые вопросы и всех искренне благодарю за помошь! |