Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Проблемы с компиляцией сорца под Vs6 (https://forum.antichat.xyz/showthread.php?t=48102)

Piflit 01.09.2007 20:31

Проблемы с компиляцией сорца под Vs6
 
Есть сорц.
Код:

#include <windows.h>

void MyWinMain(void)
{
        MessageBox(NULL,"Hello, world",NULL,MB_OK);
        ExitProcess(0);
}

В том же архиве, что и сорц (они не мои) лежит бинарник размером 2 кб. При попытке скомпилировать сорц пишет
Код:

Compiling...
tinyapp.cpp
Linking...
tinyapp.obj : error LNK2001: unresolved external symbol __chkesp
Debug/TinyApp.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

TinyApp.exe - 2 error(s), 0 warning(s)

Если заменить MyWinMain (не знаю, стоит ли это вообще делать) на WinMain выдает
Код:

Compiling...
tinyapp.cpp
C:\Tiny\TinyApp\tinyapp.cpp(4) : warning C4007: 'WinMain' : must be '__stdcall'
C:\Tiny\TinyApp\tinyapp.cpp(4) : error C2731: 'WinMain' : function cannot be overloaded
        C:\Tiny\TinyApp\tinyapp.cpp(3) : see declaration of 'WinMain'
Error executing cl.exe.

TinyApp.exe - 1 error(s), 1 warning(s)

Я запутался. Вот сорц.

!_filin_! 01.09.2007 20:43

unresolved external symbol __chkesp --- в асме такая ошибка обычно означает что неподключон файл с описанием....

Alexsize 01.09.2007 20:45

Цитата:

#include <windows.h>
int main(int argc, char* argv[])
{
MessageBox(NULL, "Alexsize forever!", "Nalivai!",MB_OK | MB_ICONQUESTION);
}
Вот он - пример что надо=)

P.S. Если хочешь, чтоб твой заработал - выкинь ExitProcess(0);

З.З.Ы. КЕЗ не ори на мну, лучше в асе ответь=)

da_ff 01.09.2007 20:46

в первом случае создается новая точка входа в программу вот почитать http://rsdn.ru/article/cpp/crt.xml
во втором не соответствуют параметры функции winmain, почитать можно там же

Piflit 01.09.2007 20:54

!_filin_!, #include <windows.h> - все подключено, windows.h лежит в инклудах.
Alexsize, та же ошибка(
da_ff, читаю...

KEZ 01.09.2007 20:55

Цитата:

unresolved external symbol __chkesp --- в асме такая ошибка обычно означает что неподключон файл с описанием....
вы не перестаете меня удивлять, кодеры античата.

Код:

tinyapp.obj : error LNK2001: unresolved external symbol __chkesp
Компилер при включенной опции разных чекингов (помоему /Gs) добавляет тебе абсолютно на*** не нужный (почти) код __chkesp, который проверяет стек после каждого вызова. А CRT у тебя отключена в проэкте, поэтому линкуется без нее и ясен *** ф-ии нет нигде. Вырубай либо проверку в настройках проэкта, либо добавь CRT. Делай первое конечно ;)
И поставь сразу main'у __stdcall. Например APIENTRY или WINAPI.

Цитата:

Вот он - пример что надо=)
это нихера не что надо. у него сделан минимальный бинарник, там отключены CRT, и т.п.

Piflit 01.09.2007 21:10

Цитата:

Сообщение от KEZ
А CRT у тебя отключена в проэкте, поэтому линкуется без нее и ясен *** ф-ии нет нигде. Вырубай либо проверку в настройках проэкта, либо добавь CRT. Делай первое конечно ;)
И поставь сразу main'у __stdcall. Например APIENTRY или WINAPI.

1) где отключить CRT? пробежал все настройки, не нашел. можно ли писать бОльшие проги (например, блокнот) с отключенным CRT?
2)
Цитата:

И поставь сразу main'у __stdcall. Например APIENTRY или WINAPI
void MyWinMain(void) __stdcall {} так? или
void WINAPI MyWinMain(void); ?

Alexsize 01.09.2007 21:13

альт + F7 - там все найдешь.

Piflit 01.09.2007 21:18

Цитата:

Сообщение от Alexsize
альт + F7 - там все найдешь.

Я это уже смотрел, но про CRT там ничего нет. Может он называется по-другому? Я в этом пока не разбираюсь(

Alexsize 01.09.2007 21:26

Грохни вообще все что в Linker окошке. Он все что надо там сам проставит. Пример то простой.


Время: 13:17