информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяСетевые кракеры и правда о деле ЛевинаСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Я не научился бороться с этим правильно 17.02.04 14:35  Число просмотров: 2195
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Не думаю что валить надо на компилятор и все же.
> Ругается: [Linker error] undefined reference to
> `WinMain@16'
Это линкер. И надо ему явно подставить точку входа. Там их две: одна юникодная, другая ансишная - поищи сам. Так вот я просто вручную в проекте забивал новую точку входа (юникодную)
<beginners>
unicode + ansi + winapi + gcc3.2 17.02.04 12:55  
Автор: deb Статус: Незарегистрированный пользователь
<"чистая" ссылка>
#define UNICODE
#define _UNICODE

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

int _tmain(int argc, TCHAR *argv[])
{
if (argc == 2)
{
if (!lstrcmp (argv [1], TEXT("--install")))
{
_tprintf (TEXT("Hello"));
}
}
}

Не думаю что валить надо на компилятор и все же.
Ругается: [Linker error] undefined reference to `WinMain@16'
Я не научился бороться с этим правильно 17.02.04 14:35  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Не думаю что валить надо на компилятор и все же.
> Ругается: [Linker error] undefined reference to
> `WinMain@16'
Это линкер. И надо ему явно подставить точку входа. Там их две: одна юникодная, другая ансишная - поищи сам. Так вот я просто вручную в проекте забивал новую точку входа (юникодную)
Этот же кусок кода VC++ нормально компилит. Без ошибок. 17.02.04 22:53  
Автор: deb Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Этот же кусок кода VC++ нормально компилит. Без ошибок.
Думаю что-то в опциях к этому gcc. Вообще Dev-Cpp пользуюсь.
Люблю gcc && не люблю VC++. Однако.....
Так и в gcc он компилится нормально 18.02.04 00:08  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Этот же кусок кода VC++ нормально компилит. Без ошибок.
> Думаю что-то в опциях к этому gcc. Вообще Dev-Cpp
> пользуюсь.
> Люблю gcc && не люблю VC++. Однако.....
Материться начинает линкер. Ладно, не хошь сам искать - я уже поискал

Бывает 4 различных точки входа:
mainCRTStartup(void)
wmainCRTStartup(void)
WinMainCRTStartup(void)
wWinMainCRTStartup(void)

---

Для main, wmain, WinMain и wWinMain соответственно. То бишь они готовят нужные данные (в частности первые две распарсивают командную строку на argc/argv) и вызывают соответсвующую функцию.

Линкер ничего не знает о том, что ты компилил проект со включенным юникодом и более того он не знает, что на самом деле компилировалось консольное, а не Win32 приложение. Не знаю как (скорее всего по умолчанию) у тебя в качестве точки входа используется WinMainCRTStartup, которая в библиотеке есть. Но она вызывает WinMain и этим ставит неразрешимую связь, на которую и ругается линкер.

Как автоматизировать это дело я не знаю. Но лечится заменой точки входа на нужную. В твоем случае это wmainCRTStartup
Я это в курсе. 18.02.04 00:48  
Автор: deb Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Я это в курсе.
Я говорил про опцию /SUBSYSTEM для vc++ линкера.
И про /ENTRY.
Просто я не в курсе gcc(правильнее наверно ld) поддреживает это или нет.
entry точно поддерживает 18.02.04 01:52  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Я это в курсе.
> Я говорил про опцию /SUBSYSTEM для vc++ линкера.
> И про /ENTRY.
> Просто я не в курсе gcc(правильнее наверно ld) поддреживает
> это или нет.
Не помню ключа - читай man. А подсистемы должен поддерживать если вообще работает с PE файлами.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach