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


Автор: Hedrox 14.3.2005, 18:48
Привет всем! Есть такая проблема - нужно скомпилить исходник на си, прога виндовая, компилятор -
Borland C++ 5.02, синтаксических ошибок в коде нет, файл компилится, но линковаться не хочет -
компилятор говорит что ошибка и пишет вот такую вешь:

Error: Unresolved external '_main' referenced from D:\PROGRAM FILES\BC5\LIB\C0X32.OBJ

Причём это с любой виндовой программой, в любой винде... В чём же ошибка, и это всё обойти?
smile

Автор: srd 14.3.2005, 18:55
Укажи в проекте, что собираешь Win32-приложение, а не консольное приложение. Где это делается у Борланда - не знаю, посмотри ключи линкера.

Автор: Hedrox 14.3.2005, 20:22
Поподробнее мне бы... Но всё равно спасибо... Мож кто ещё знает?

Автор: LuckLess 14.3.2005, 21:10
не знаю сработает ли это в Борланде , но попробуй написать
#pragma comment(linker, "/SUBSYSTEM:WINDOWS")

Автор: Hedrox 14.3.2005, 21:50
не, не помогло =(

Автор: LuckLess 14.3.2005, 21:53
Hedrox
на прагму компилер ругаеться?

Покажи исхожник...

Автор: Hedrox 14.3.2005, 23:00
Именно на прагму и ругается... исходник слишком длинный... если хочешь на мыло вышлю...

Автор: srd 15.3.2005, 11:30
Собираешь программу из командной строки или из IDE?
Если из командной строки, то смотри ключи линкера, с помощью которых указывается тип приложения.
Если из среды - то видимо не создаешь правильный проект, либо вообще не создаешь, а пытаешься скомпилить отдельно взятый исходник.

Автор: Hedrox 15.3.2005, 13:38
Цитата(srd @ 15.3.2005, 11:30)
Если из среды - то видимо не создаешь правильный проект, либо вообще не создаешь, а пытаешься скомпилить отдельно взятый исходник.

Да, я его не создаю, он у меня есть на винте, один фай с расширением ц, да, такой прикол выходит всегда если я хочу написать виндовое приложение на апи в иде smile

Автор: srd 15.3.2005, 13:51
Файл с расширением *.c - это не файл проекта! Если работаешь в IDE, то сначала создай правильный проект, а потом добавь в проект файлы *.c и компилируй.

Автор: Adil' 15.3.2005, 13:59
Hedrox,
1 запусти Билдер,
2. навсякий случай - File->CloseAll,
3. затем File->New...,
4. впоявившемся диалоге, вкладка New, выбери Console Wizard, OK,
5. в следующем диалоге поставь Source Type: C или С++ - взависимости от того, какой у тебя исходник *.с или *.cpp,
6. сними, если стоит, галку у Use VCL,
7. сними, если стоит, галку у Console Application
8. галка у Multi Threaded - на твоё усмотрение
9. Поставь галку, если не стоит, у Specify project source
10. Нажми кнопку с тремя точками и выбери свой файл-исходник
11. Ok
12. File->Save All... и сохрани проект в нужном месте (лучше там же где исходник smile )
13. Бьюлд энд энжой

З.Ы. О, получилось пояснение к посту srd

Автор: Hedrox 15.3.2005, 15:59
2Adil' - да я ж не билдер юзаю smile а борланд с++ 5.02 smile

Автор: _hunter 15.3.2005, 16:20
ну так в нем новый проект создай. и замени содержимое основного файла с кодом

Автор: srd 15.3.2005, 17:12
Какая разница, что юзаешь. Ищи что-нибудь "New project", а там понятно, куда нажимать.
А если со средой не дружишь, то попробуй скомпилировать так:
Код

bcc32.exe -W file1.c file2.c

где file1.c file2.c - это твои исходники.
-W - Win32 приложение.
Смотреть ключи надо так
Код

bcc32.exe -h

а справку по конкретному ключу
Код

bcc32.exe -h -W

где -W - ключ.
Вроде всё, что можно, разжевали уже.


Автор: Hedrox 15.3.2005, 17:23
Спасибо всем, у меня вышло ;) может кто может дать исходник минимального приложения на Win32API, под борланд С++ 5.02, очень нужно. Спасибо.

Автор: srd 15.3.2005, 17:27
Вот тебе исходник минимального win32-приложения для любого win32-компилятора.
Код

#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    return 0;
}


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