Войти
ПрограммированиеФорумОбщее

Помогите разобраться с Microsoft Visual C++ ToolKit 2003

Страницы: 1 2 Следующая »
#0
11:07, 13 фев 2010

Доброе утро!

Скачал Microsoft Visual C++ ToolKit 2003. В нём нет IDE. Код писать можно в любом текстовом редакторе и потом скармливать компилятору. Так вот, сам же я смог таким образом создать только Windows Console приложение.

Конечно понимаю что есть различные IDE, такие как CodeBlocks, но всё же, как мне самому создать на нём Windows Appication, чтобы подключать библиотеки и заголовочные файлы для поиска? То есть ему нужно сувать системную переменную LIB или ещё какую-то, где будут описаны через двоеточие каталоги или ещё как-то? Расскажите кто знает. И вообще, дайте ссылку или сами напишите, какие команды с описанием у него есть, и для компилятора, и для линковщика. Просто хочу научиться собирать проекты без IDE, а чисто самому, с помощью bat-файла.

Для компилятора и для линковщика, конечно выводится список команд (если ввести или /help или /?), вот только там нет описание что для чего.

Помогите, пожалуйста!


#1
11:12, 13 фев 2010

s3dworld

Ну, или пиши все руками через *.bat, или освой какой-нибудь CMake. А опции компилятора/линкера и подробное описание как всем этим пользоваться есть в MSDN.

#2
11:15, 13 фев 2010

Ну почему же всё время через bat. Потом программку можно написать, которая будет сравнивать время создания исходного кода. И если время не изменилось, то скармливать линковщику объектный файл, а если езменилось - компилятору.

#3
14:58, 13 фев 2010

например кидаешь в папку bin вот такой вот батник, обзываешь его compile.bat

 @echo off
 rem    исходный файл  Стандартные include компилятора и Windows              дополнительные include  путь для obj  Опции компилера   Опции линкера
 rem    -------------  -----------------------------------------------------  ----------------------  ------------  ---------------   ---------------------------------------------------------------------------
 cl     %1.cpp         /I \VC2003_std\Include /I \VC2003_std\Include\Windows  /I %2                   /Fo%1.obj     /EHsc             /c

 rem                   готовый exe  Опции линкера       Стандартные lib Windows и компилятора                      дополнительные lib  Используемые lib при постройке приложения
 rem    -------------  -----------  ------------------  ---------------------------------------------------------  ------------------  ---------------------------------------------------
 link   %1.obj         /out:%1.exe  /SUBSYSTEM:Windows  /libpath:\VC2003_std\Lib /libpath:\VC2003_std\Lib\Windows  /libpath:%3         kernel32.lib user32.lib gdi32.lib %4 %5 %6 %7 %8 %9

 pause

или компиляция с ресурсами (compile_res.bat)

 @echo off

 rem    Компиляция ресурсов
 rem    --------------------
 rc     /i \vc2003_std\Include /i \VC2003_std\Include\Windows  /v  %1.rc

 cvtres /MACHINE:IX86  /OUT:%1_.obj %1.res

 rem    исходный файл  Стандартные include компилятора и Windows              дополнительные include  путь для obj  Опции компилера   Опции линкера
 rem    -------------  -----------------------------------------------------  ----------------------  ------------  ---------------   ---------------------------------------------------------------------------
 cl     %1.cpp         /I \VC2003_std\Include /I \VC2003_std\Include\Windows  /I %2                   /Fo%1.obj     /EHsc             /c

 rem                   готовый exe  Опции линкера       Стандартные lib Windows и компилятора                      дополнительные lib  Используемые lib при постройке приложения
 rem    -------------  -----------  ------------------  ---------------------------------------------------------  ------------------  --------------------------------------------------------------------------
 link   %1.obj %1_.obj /out:%1.exe  /SUBSYSTEM:Windows  /libpath:\VC2003_std\Lib /libpath:\VC2003_std\Lib\Windows  /libpath:%3         kernel32.lib user32.lib gdi32.lib advapi32.lib winmm.lib %4 %5 %6 %7 %8 %9

 pause

далее например создаешь папку /work/1 в той же директории, в которой у тебя Bin, include и т.д

в нее копируешь пример (я взял для тестов с codesampler.com один из примеров directx)
и создаешь в нем батник такого содержания:

 @echo off

 CHDIR ..\..\bin

 rem          имя исходного файла             путь до Include              путь до Lib              ресурсы                        дополнительные библиотеки           
 rem          ----------------------------    ---------------------------  -----------------------  -----------------------------  -------------------------
 compile_res  ..\Work\1\dx9_multiple_devices  \Vc2003_std\Include\DirectX  \Vc2003_std\Lib\DirectX                                 d3d9.lib d3dx9.lib

если относительные пути в порядке то нажав на этот батник скопилится пример и exe сохранится в папку work/1/ где лежат исходники.

Естественно все пути и библиотеки используемые при компиляции и линковке надо прописывать ручками в bat файл (который в папке с приложением). Если хочется каких то опций компилера то читать справку и писать их в батник в папке Bin (compile.bat, compiler_res.bat)

PS
структура папок такая была
Bin
Include
    DirectX
    SYS
    Windows
Lib
    DirectX
    Windows
Work
    1

#4
16:24, 13 фев 2010

Спасибо большое, keYMax! Очень помог!

Я уже сам разобрался как создавать Windows-программки. Только я сделал всё с помощью переменных операционной системы LIB и INCLUDE.

Файл main.cpp:

#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR,int)
{
  MessageBox(0,"Привет!","Message",MB_OK);
  
  return 0;
}

Файл run.bat:

@echo off

rem link main.obj
rem kernel32.lib
rem user32.lib
rem gdi32.lib
rem winspool.lib
rem comdlg32.lib
rem advapi32.lib
rem shell32.lib
rem ole32.lib
rem oleaut32.lib
rem uuid.lib
rem odbc32.lib
rem odbccp32.lib

SET INCLUDE=c:\Program Files\Microsoft Visual C++ Toolkit 2003\include\;c:\Program Files\Microsoft SDKs\Windows\v7.0\Include\;c:\Program Files\Microsoft Visual Studio 9.0\VC\include\
SET LIB=c:\Program Files\Microsoft Visual C++ Toolkit 2003\lib\;c:\Program Files\Microsoft SDKs\Windows\v7.0\Lib\;c:\Program Files\Microsoft Visual Studio 9.0\VC\lib\

cl main.cpp /c

if ERRORLEVEL == 0 (
  goto label_Link
)

if ERRORLEVEL != 0 (
   goto label_Error
)


:label_Error

  echo Error compiller!
  echo %ERRORLEVEL%
  goto label_End


:label_Link

  echo Complete compiller!
  link main.obj user32.lib /SUBSYSTEM:WINDOWS
  goto label_End


:label_End

  pause

Так как у меня папочка компилятора забита в PATH системы, то располагать исходный код и bat-файл можно где угодно. Эх, теперь, на основании твоего кода, много что интересного сделаю. А кстате, у меня что-то не очень провека на ошибки, как всё таки организовать возврат значение и для компилятора и для линковщика, чтобы знать куда что перенаправлять?

#5
20:24, 13 фев 2010

s3dworld
Так ты ж несколько дней назад про 2010 студию спрашивал :).
Или она уже неактуальна?

#6
22:13, 13 фев 2010

s3dworld
> Для компилятора и для линковщика, конечно выводится список команд (если ввести
> или /help или /?), вот только там нет описание что для чего.
Полное описание всех опций компилятора и линковщика есть в MSDN или Windows Platform SDK Documentation.

Кстати: с момента выхода MSVC TK 2003 произошли некоторые изменения в стандарте C++, так что могут возникнуть некоторые проблемы с компиляцией с использованием новых SDK.

#7
11:48, 14 фев 2010

Ну на счёт Visual C++ ToolKit 2003 это точно, старый уже. Можно пользоваться компилятором из Microsoft Windows 7 SDK, там включён Compiler C/C++ 15 из Visual C++ 9.

vonrims, про стодию спрашивал. И если ты почитаешь что я спрашивал, то поймёшь, что у меня с ней проблемы. То что в Visual C++ 2008 работает, то в Visual C++ 2010 пишет как нет доступа к закрытым функциям класса. Хотя я указывал дружественный класс. Может новый стандарт, не знаю. Мне никто не помог.

#8
12:38, 14 фев 2010

s3dworld

>Потом программку можно написать, которая будет сравнивать время создания исходного кода.
Есть мнение, что все, начиная с написания *.bat файлов и заканчивая такой программкой - это занятие какой-то совершенно ненужной ерундой.

#9
14:57, 14 фев 2010

s3dworld
> нет доступа к закрытым функциям класса. Хотя я указывал дружественный класс.
> Может новый стандарт, не знаю. Мне никто не помог.
Менять приличную новую студию на барахло 7-летнего возраста только из-за непоняток с защитой методов класса?
Зачем же так.
Купил новый джип, в старом пепельница полная уже.

P.S. По вопросу заданному в #0 посте ничего подсказывать не буду, ибо пытаться писать проекты через такую задницу - пустая трата времени. Мож тебе просто нравится бат файлики делать?

#10
16:01, 14 фев 2010

Есть мнение, что все, начиная с написания *.bat файлов и заканчивая такой программкой - это занятие какой-то совершенно ненужной ерундой.
Вот мои пять копеек. Иногда нужно что-то легкое и переносимое для написания несложных приложений, а не монструозные студии кушающие оч много места и требующие настройки + ползанья в бесконечных меню.

#11
16:07, 14 фев 2010

keYMax
> Иногда нужно что-то легкое и переносимое для написания несложных приложений, а
> не монструозные студии кушающие оч много места и требующие настройки + ползанья
> в бесконечных меню.
Тогда уж лучше GCC + GNU Make.

#12
16:16, 14 фев 2010

alexcg
с GCC не заморачивался но подозреваю что там гооораздо сложнее чем один два файлика bat.

#13
16:17, 14 фев 2010

keYMax

> Иногда нужно что-то легкое и переносимое для написания несложных приложений, а не монструозные студии кушающие оч много места и требующие настройки + ползанья в бесконечных меню.
Даже в этом случае батнички никто не пишет. Если говорить про Visual Studio (или тот же самый VC Toolkit), то в них для этого есть надежная и отлаженная вещь, которая называется nmake. Пишешь make file, скармливаешь nmake и получаешь готовый модуль. А вообще, я уже сказал, что есть CMake.

#14
16:39, 14 фев 2010

Ghost2
Насколько я понимаю CMake генерирует лишь файл make, который затем придется скармливать nmake в случае с вижуал студио?
Как в случае CMake так и в случае make придется изучить синтаксис скармливаемых им файликов с описанием что откуда брать. В случае же .bat файлов, которые мало мальски знают почти все, особо знаний прикладывать не требуется.

Разные варианты имеют право на жизнь. Вы предложили использовать одно, я другое :), другие отвечающие третье. Пусть ТС выбирает что ему нравится, а отрубать словами : "Бред товарищ, никто так не делает" нехорошо.

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.