Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Не линкуется консольное приложение


Автор: LolensSmith 22.7.2009, 01:31
Доброго времени суток, помогите, пожалуйста, проблемма в работе с функциями.

// Ранее писал программы(web) на php и аказалось что синтаксис функций чуть разный...  smile 

Вот читаю учебник по C++, глава функции. Вроде написал всё как в учебнике, но... ошибка компилятора:
[ILINK32 Error] Error: Unresolved external '__InitVCL' referenced from C:\PROGRAM FILES\CODEGEAR\RAD STUDIO\5.0\LIB\CP32MTI.LIB|crtlvcl
[ILINK32 Error] Error: Unresolved external '__ExitVCL' referenced from C:\PROGRAM FILES\CODEGEAR\RAD STUDIO\5.0\LIB\CP32MTI.LIB|crtlvcl

Сам код:
Код

//------------------------------------------------
#include <iostream.h>
#include <conio.h>
#pragma hdrstop

//--- function decloration ---//
int multiply(int, int);
void showResult(int);

//--- Main function ---//
int main(int argc, char** argv)
{
    int x, y, result;
    cout << endl << "Enter the first value";
    cin >> x;
    cout << "Enter the second value";
    cin >> y;
    result = multiply(x,y);
    showResult(result);
    cout << endl << endl << "Press any key to continue...";
    getch();
    return 0;
}
//--- Functions ---//
int multiply(int x, int y)
{
    return x * y;
}
void showResult(int result)
{
    cout << "The result is : " << result << endl;
}

 smile 

Программа-компилятор: 
CodeGear™ C++Builder® Version 11.0.2709.7128 Copyright © 2007 CodeGear™. All Rights Reserved.  smile 

По моему чтото подобное С++ Builder 2007, так как файл установки именован "Cbuilder2007trialSetup"...  smile 

// -- P.s Был бы апач затруднений было бы меньше  smile 

Автор: andrew_121 22.7.2009, 04:34
Цитата(LolensSmith @  22.7.2009,  01:31 Найти цитируемый пост)
[ILINK32 Error] Error: Unresolved external '__InitVCL' referenced from C:\PROGRAM FILES\CODEGEAR\RAD STUDIO\5.0\LIB\CP32MTI.LIB|crtlvcl
[ILINK32 Error] Error: Unresolved external '__ExitVCL' referenced from C:\PROGRAM FILES\CODEGEAR\RAD STUDIO\5.0\LIB\CP32MTI.LIB|crtlvcl

Это ошибка линковки. InitVCL, ExitVCL это походу связано с визуальными компонентами. Но программа у тебя консольная. Так что при чем тут визуальные компоненты хз*. Попробуй проект заново создать. Что-то типа "console application" или как это в борланде завется....


Цитата(LolensSmith @  22.7.2009,  01:31 Найти цитируемый пост)
#include <iostream.h>

Еще любопытно почему не ругается на это. Этих хидеров уже давно нет в стандарте. Чудо smile 

Автор: Lazin 22.7.2009, 09:55
LolensSmith, объясни как-нибудь компоновщику, что у тебя консольное приложение, а не VCL.
В качестве варианта - создай новый консольный проект и скопируй туда код.

Автор: RinOSpro 22.7.2009, 12:02
Код

{$APPTYPE CONSOLE}


В Delphi объясняется так... Если учесть что борланд писал и то и то, возможно подойдет. 

С++ компилятора от борланд по рукой нету. что бы точно ответить.

Автор: LolensSmith 22.7.2009, 12:03
Цитата(andrew_121 @  22.7.2009,  04:34 Найти цитируемый пост)
Еще любопытно почему не ругается на это. Этих хидеров уже давно нет в стандарте. Чудо  

andrew_121,  Обьясните, пожалуйста, как пишется теперь... возможно, У меня учебник старый.
 

andrew_121, Lazin, Спасибо, Заработало. Сделал так: Не замечал раньше что при создании проекта, вылазит меню а в ней стоят 3 checkbox'a, 2 из них отмечены.

[V] Use VCL
[] Multi Threaded
[V] Console Application

Убрал галочку Use VCL и всё заработало, Спасибо!

Добавлено через 4 минуты и 15 секунд
RinOSpro, Попробывал ваш вариант и сразу после "//-------..." Вставил код...

Компилятор выдаёт множество ошибок.

Автор: and277 22.7.2009, 14:27
Насчет устаревших хедеров - заголовков привыкай не юзать их. Сейчас не указывается (dot h).  Потому что в С++ это не имя файла.  Использование устаревших хедеров  оставлено для совместимости со старым кодом. 

Автор: LolensSmith 22.7.2009, 14:48
and277, Тогда как с этим боротся, если мне нужен этот Инклуд... Я ведь не смогу использовать нужные мне функции? 

Автор: JackYF 22.7.2009, 16:29

 ! 
JackYF
LolensSmith, для новых вопросов нужно создавать новые темы, а не писать в давно решённые старые. Эту тему я разделил.

Автор: and277 22.7.2009, 18:49
Цитата(LolensSmith @ 22.7.2009,  14:48)
and277, Тогда как с этим боротся, если мне нужен этот Инклуд... Я ведь не смогу использовать нужные мне функции?

Самое простое в твоем случае. Это использование устаревшего но вполне для учебы хорошего Visual Studio C++ 6.0 
Большинство кода думаю будет пахать без модернизации. Твой пример, только что проверил - компилится без ошибок в 6-ке.

Напиши хоть какой книгой пользуешься, год издания... Сейчас в продаже есть книги по с++ например Лафоре ООП в С++. Там юзаются специфичные функции и код приходится иногда переписывать что бы книжный пример работал корректно в современном компиляторе.

И самое главное: тебе срочно нужно почитать об особенностях новых заголовков в сравнении со старыми. Этому посвещяется как правило несколько страниц в сравнительно свежих книгах по С++. Ну например даже в древнем Самоучителе С++ Шилдта точно есть...

Автор: JackYF 23.7.2009, 13:58
Цитата(and277 @  22.7.2009,  17:49 Найти цитируемый пост)
Это использование устаревшего но вполне для учебы хорошего Visual Studio C++ 6.0 
Большинство кода думаю будет пахать без модернизации

Это плохой совет. Компилятор оттуда сильно устарел. Лучше начинать с бесплатных версий современных компиляторов, от 2005 и младше.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)