Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Компиляция в Visual C++ 5

Автор: VK220
Дата сообщения: 10.07.2004 20:55
Hello!
Собираюсь изучать Visual C++. Вот, написал небольшую консольную программку, хочу откомпилировать - ничего не получается!!! создались папки Debug и Release, а в них ничего нету!!! Я уж и просто компилировал, и перестраивал (Rebuild)... в логах всё нормально - создаётся файл в TEMP-e (D:\TEMP) с командной строкой, никаких ошибок (только линкер не находит .obj - файл)... В чём может быть проблема? спасибо!
Автор: mihas83
Дата сообщения: 11.07.2004 07:04
VK220

Цитата:
Собираюсь изучать Visual C++. Вот, написал небольшую консольную программку, хочу откомпилировать - ничего не получается

Странно. Как ты ее ''собирал''?
С помощью визарда?
Автор: VK220
Дата сообщения: 11.07.2004 10:52
Ну, да, - Windows32 console application. я же только начинающий... в основном программировал под Delphi. под Borland С++ Builder - пробовал, но он тормозит жутко,
одно мучение.
нажимаю компилировать - появляется: 0 errors 0 warnings, а объектные файлы не создаются. соответственно линкер их не находит. параметры компилятора - по умолчанию, даже папки создались (Debug и Release).
Автор: redp
Дата сообщения: 11.07.2004 13:53
кхе-кхе
а ты файлы то свои в проект случаем не забыл добавить ?
Автор: VK220
Дата сообщения: 11.07.2004 14:31
я нажал New -> C++ Source file, там написал текст (процедура WinMain) и всё, компилировал... не исключено, что я чего-то забыл.
Автор: redp
Дата сообщения: 11.07.2004 14:33
кхе-кхе
а проект то у тебя есть ? а во вкладке FileView проекта твой файл имеет место ?
я подозреваю что ты просто создал C++ файло, а не проект
Иди в File->New->вкладка Projects->Win32 console application
и будет тебе щастие
Автор: VK220
Дата сообщения: 11.07.2004 14:41
После просто компиляции мне внизу пишется:

FCProject.obj - 0 errors (s), 0 warning (s).

FCProject - это я так назвал С++ Source File, а вот после Build - такое:

Copyright (C) Microsoft (и т.д.)
usage: cl [option...] filename ... [/link linkoption...]
Linking...
LINK: fatal error LNK1104: cannot open file ".\Debug\FCProject.obj"

(троеточия - тоже компилятор вписал)

Добавлено
на вкладке FileView имеется:

Workspace 'FCProject': 1 Project (s)
(+) FCProject files

Добавлено
После ещё нескольких попыток собрать проект привожу лог:

--------------------Configuration: FCProject - Win32 Debug--------------------
Begining build with project "D:\My Documents\MyVCPP_projects\MyFirstConsoleProject\FCProject.dsp", at root.
Active configuration is Win32 (x86) Console Application (based on Win32 (x86) Console Application)

Project's tools are:
"32-bit C/C++ Compiler for 80x86" with flags "/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Debug/FCProject.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /c "
"Win32 Resource Compiler" with flags "/l 0x419 /d "_DEBUG" "
"Browser Database Maker" with flags "/nologo /o"Debug/FCProject.bsc" "
"COFF Linker for 80x86" with flags "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/FCProject.pdb" /debug /machine:I386 /out:"Debug/FCProject.exe" /pdbtype:sept "
"Custom Build" with flags ""
"<Component 0xa>" with flags ""

Creating temp file "C:\TEMP\RSP88.tmp" with contents </nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Debug/FCProject.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /c
"D:\My Documents\MyVCPP_projects\MyFirstConsoleProject\FCProject.cpp"
>
Creating command line "cl.exe @C:\TEMP\RSP88.tmp"
Creating temp file "C:\TEMP\RSP89.tmp" with contents <kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/FCProject.pdb" /debug /machine:I386 /out:"Debug/FCProject.exe" /pdbtype:sept
".\Debug\FCProject.obj">
Creating command line "link.exe @C:\TEMP\RSP89.tmp"
Compiling...
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 11.00.7022 for 80x86
Copyright (C) Microsoft Corp 1984-1997. All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]
Linking...
LINK : fatal error LNK1104: cannot open file ".\Debug\FCProject.obj"
Error executing link.exe.



FCProject.exe - 1 error(s), 0 warning(s)
-----------------------------------------------------------------------------------------

на диске С - FAT32. Ничего не пойму!!!

Добавлено
Совсем забыл: сижу под Win2000 SP2, версия Visual C++ 5 Enterprice. При установке он потерял какую-то dll, а после установки не смог зарегистрировать файл MSXBSE35.dll, который тем не менее находится в системной папке WINNT\System32. могло ли это явиться причиной?
И заодно: как из командной строки откомпилировать *.mak файл? Может его получится?
Автор: redp
Дата сообщения: 11.07.2004 15:16
мда, чо-то у тебя как-то Visual C++ как-то криво встал
из командной строки - через nmake
это ежели все переменные среды в VCVARS32.BAT правильно встали
Автор: mihas83
Дата сообщения: 11.07.2004 15:49
redp

Цитата:
а ты файлы то свои в проект случаем не забыл добавить ?

VK220, подозреваю что ты просто создал C++ файл, но не добавил его в проект:
во вкладке FileView, если не видишь его - добавь через контекстное меню.
Автор: VK220
Дата сообщения: 12.07.2004 11:03
nmake - тоже говорит:
copyright (c) и т.д.
А проект у меня есть!!! и файл в него включён!!!
Автор: f_serg
Дата сообщения: 13.07.2004 07:59
VK220
Такое впечатление, что у тебя не тот cl.exe вызывается. Поищи по диску, возможно от старой версии компилятор остался.
Автор: VK220
Дата сообщения: 13.07.2004 20:30
Компилятор:

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 11.00.7022 for 80x86
Copyright (C) Microsoft Corp 1984-1997. All rights reserved.

(это я набрал:

E:\>cl /?
)
Автор: f_serg
Дата сообщения: 14.07.2004 07:24
VK220
Это понятно. Просто судя по

Цитата:
usage: cl [ option... ] filename... [ /link linkoption... ]

компилятору передаются опции, которые он не понимает. Возможно ты не полностью снес старую версию и где-то в путях остался cl.exe от этой старой версии? Просто запусти поиск по локальным дискам на предмет cl.exe и посмотри, сколько таких найдется.
Автор: VK220
Дата сообщения: 15.07.2004 18:29
Действительно - их два, он один входит в состав дистрибутива Visual Basic 6 и при запуске с указанием абсолютного пути ничего не выдаёт, в то время как запуск без пути выдаёт, что это компилятор C++. Больше таких файлов у меня нет.
Мне тоже не нравится это usage, а что он должен на самом деле выводить?
Автор: f_serg
Дата сообщения: 16.07.2004 08:21
VK220

Цитата:
Мне тоже не нравится это usage, а что он должен на самом деле выводить?

Компилировать он должен. Попробуй из проекта сделать Makefile и напусти на него nmake. Надо посмотреть на опции с которыми cl.exe запускается.
Автор: VK220
Дата сообщения: 16.07.2004 20:44
nmake творит то же самое
параметры должны передаваться:

/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Debug/FCProject.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /c

я ничего не менял - всё по-умолчанию
Автор: mihas83
Дата сообщения: 17.07.2004 07:28
VK220
Ты уже мучаешься с 08-06-2004.
ИМХО, проще уже снести все и установить Visual C++ заново.
Автор: VK220
Дата сообщения: 17.07.2004 11:34
уже пробовал.
сейчас я имею возможность задать вопрос поконкретнее:
по какой причине могут не передаваться параметры командной строки?
при указании этих же параметров вручную всё сразу откомпилировалось, а вот линкер нашёл какую-то ошибку в файле библиотеки. сейчас не помню...
Автор: mihas83
Дата сообщения: 17.07.2004 15:11
VK220

Цитата:
линкер нашёл какую-то ошибку в файле библиотеки. сейчас не помню...

Toгда это бестолковый разговор...
Автор: VK220
Дата сообщения: 17.07.2004 17:05
в файле библиотеки *.lib...

Добавлено
Короче. Снёс я этот VC++ 5 и накопал на каком-то CD Visual C++ 6.
только архив немного повреждён.
два файла:

Win32.ncb (6,3 Mb)
MFCATL.ncb (1,8 Mb)

в папке COMMON\MSDEV98\BIN дисрибутива
подскажите где можно скачать (только их), и нужны они вообще?
искал в инете и на ftp.microsoft.com - не нашёл
Автор: Dust
Дата сообщения: 17.07.2004 19:32
VK220
Без них заработает...

если в IDE не получается - собери руками.

cl /с mysource.cpp /I..
link mysource.obj /LIB..

Дополнительные ключи:
/IMYINCLUDEDIRS
где MYINCLUDEDIRS - путь к инклудникам
Это для компайлера
Для линкера LIB - путь к бибилиотекам.

Если все получиться - напиши батник.
Таким образом можно работать без IDE (если оно у тя битое).
И, запомни вот еще что - все студии не просто разворачиваются из архива, они еще и прописывают переменные окружения.
Для VS 6.0 это vsvars32.bat

У меня он имеет такой вид:

Код:
@SET VSINSTALLDIR=D:\Apps\Microsoft Visual Studio .NET\Common7\IDE
@SET VCINSTALLDIR=D:\Apps\Microsoft Visual Studio .NET
@SET FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
@SET FrameworkVersion=v1.0.3705
@SET FrameworkSDKDir=D:\Apps\Microsoft Visual Studio .NET\FrameworkSDK
@rem Root of Visual Studio common files.

@if "%VSINSTALLDIR%"=="" goto Usage
@if "%VCINSTALLDIR%"=="" set VCINSTALLDIR=%VSINSTALLDIR%

@rem
@rem Root of Visual Studio ide installed files.
@rem
@set DevEnvDir=%VSINSTALLDIR%

@rem
@rem Root of Visual C++ installed files.
@rem
@set MSVCDir=%VCINSTALLDIR%\VC7

@rem
@echo Setting environment for using Microsoft Visual Studio .NET tools.
@echo (If you also have Visual C++ 6.0 installed and wish to use its tools
@echo from the command line, run vcvars32.bat for Visual C++ 6.0.)
@rem

@REM %VCINSTALLDIR%\Common7\Tools dir is added only for real setup.

@set PATH=%DevEnvDir%;%MSVCDir%\BIN;%VCINSTALLDIR%\Common7\Tools;%VCINSTALLDIR%\Common7\Tools\bin\prerelease;%VCINSTALLDIR%\Common7\Tools\bin;%FrameworkSDKDir%\bin;%FrameworkDir%\%FrameworkVersion%;%PATH%;
@set INCLUDE=%MSVCDir%\ATLMFC\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\PlatformSDK\include\prerelease;%MSVCDir%\PlatformSDK\include;%FrameworkSDKDir%\include;%INCLUDE%
@set LIB=%MSVCDir%\ATLMFC\LIB;%MSVCDir%\LIB;%MSVCDir%\PlatformSDK\lib\prerelease;%MSVCDir%\PlatformSDK\lib;%FrameworkSDKDir%\lib;%LIB%

@goto end

:Usage

@echo. VSINSTALLDIR variable is not set.
@echo.
@echo SYNTAX: %0

@goto end

:end

Автор: VK220
Дата сообщения: 17.07.2004 20:57
без них (как я думаю) не устанавливается - говорит мол:

отсутствует файл acmboot.exe или один из его компонентов,

хотя файл этот в той же папке и со значком дистрибутива (не повреждён)

Добавлено
и так как я совсем не знаю Visual C++, без IDE мне не обойтись...
Автор: Dust
Дата сообщения: 18.07.2004 20:56
VK220
Поленись... Потом еще поленись... Если еще ролениться то можно вообще выкинуть из головы идею программить.

Естиь три варианта решения твоей проблемы:
1. Забить на все
2. Достать нормальный дистр
3. Научиться обходиться тем чем есть
Автор: VK220
Дата сообщения: 25.07.2004 11:20
Я НЕ ЛЕНЮСЬ!
Пользование такими вещами как Code Completion сильно облегчает процесс программирования, позволяет сосредоточитться на логике и т.д. и т.п.
А так как я новичок, мне простительно.
В общем, вопрос был: где можно их скачать, если не знаете - не пишите пожалуйста.
Автор: VK220
Дата сообщения: 23.08.2004 17:09
Вот, наконец-то у меня появился нормальный дистр! VC++ 6.0, а вернее целый пакет Microsoft Visual Studio!
И проблемы не заставили себя ждать!
Пишу я, создав новый консольный проект:
#include <iostream.h>

void _main(void)
{
cout << "(Unsigned)int = " << sizeof(int) << endl;
cout << "(Unsigned)short = " << sizeof(short) << endl;
cout << "(Unsigned)char = " << sizeof(char) << endl;
cout << "(Unsigned)float = " << sizeof(float) << endl;
cout << "(Unsigned)double = " << sizeof(double) << endl;
cout << "(Unsigned)long = " << sizeof(long) << endl;
cout << "(Unsigned)long double = " << sizeof(long double) << endl;
}

Компилятор говорит, что всё нормуль, а вот линкёр:

IBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/FCProject.exe : fatal error LNK1120: 1 unresolved externals

И прямо не знаю что с ним делать! Находил много подобных тем, но там ничего путого нету - все советуют флажки попереставлять, ещё что-то, но я всё пробовал - ничего!
Закралось подозрение, что просто не хватает какой-нить dll-ки?
возникала у кого-нить такая проблема?

Добавлено
А скорее даже не dll-ки, а lib-ки.
В свойствах линкера:
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib. может, чего-то не хватает?
Автор: mihas83
Дата сообщения: 24.08.2004 08:54
VK220

Цитата:
И проблемы не заставили себя ждать!

Они тебя любят.

Цитата:
void _main(void)

А как ты создавал консольный проект?
Обычно он ''кидает'':

Код: int main(int argc, char* argv[])
{
return 0;
}
Автор: VK220
Дата сообщения: 24.08.2004 12:07
нет, нет.
он создал пустой проект, потом я создал файл С++ Source File и там всё это набрал.
кстати, только что написал то же самое, только заново (создал Консольное приложение), а в тексте функ. main() - только одну команду:

cout << "Hello world! \n";

и всё - никаких ошибок!
А в какой библиотеке сидит SizeOf() ?
Автор: mihas83
Дата сообщения: 24.08.2004 14:57

Цитата:
только заново (создал Консольное приложение), а в тексте функ. main()

В первое случае ты писал _main()

Цитата:
в какой библиотеке сидит SizeOf

sizeof - operator
Автор: VK220
Дата сообщения: 26.08.2004 16:27

Цитата:
ты писал _main()

я пробовал и _main и main и Main и WinMain (так, на всякий случай)...
результат я уже описал...

Цитата:
sizeof - operator

... я думал функция... - единственное отличие двух текстов...
Автор: mihas83
Дата сообщения: 26.08.2004 17:53

Цитата:
пробовал и _main и main и Main и WinMain

В чем разница и особенности очень подробно и толково написано в главе 4 книги Рихтера.
Рекомендую!

Страницы: 12

Предыдущая тема: Decompiler for Clarion


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.