1 Востаннє редагувалося Дмитро-Чебурашка (17.05.2020 22:51:57)

Тема: Makefile undefined reference to WinMain@16 в віндовсі

Нещодавна- вчора я такий, вирішив спробувати налаштувати компіляцію мей-файлів в середовищі codeblocks-у, у windows-і. Майн в коді є код сам практично банальний. нічого не розумію. Я не зрозумію, про що це повідомлення, чі не то ця бібліотека потрібна а її немає, а чі то вона є і вже в ній виклик цьогосамого  WinMain@16. Чі що воно таке взагалі. Не регулярно я, не часто кодую, не памьятаю якщо і знав, що куди прописувати, куди які шляхи, а мабуть і не знав, тому що ціма мейк-файлами раніше не користувавссь. Або не скомпіляв їх ніколи раніше.

all:
    g++ main.cpp hello.cpp factorial.cpp -o hello

Декілька годин, і аж далеко за північ я так і не здолав проблему..

-------------- Build: hello in mf (compiler: GNU GCC Compiler)---------------
mingw32-make.exe -f Makefile-1 hello
g++ hello.cpp -o hello
D:/MinGW/bin/../lib/gcc/mingw32/5.1.0/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7): 'undefined reference to "WinMain@16
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe: *** [hello] Error 1
<builtin>: recipe for target 'hello' failed
Process terminated with status 2 (0 minute(s), 6 second(s))
2 error(s), 0 warning(s) (0 minute(s), 6 second(s))

Тобто все начеб то по мануалу, створив я порожній проєкт, поставив галочку що ,,кустом макефілі,, ...
Мабуть є якись таємниці цього процесу.

А ще мені не зрозуміло що це взагалі за рядок D:/MinGW/bin/../lib/gcc/mingw32/5.1.0/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7):

Тому що    D:/MinGW/bin в мене на компі є;

Але до чого він, в мене прописана сістемна змінна, в неї шлях інший D:\CodeBlocks\MinGW
Яким чіном береться D:/MinGW/bin я дупля не зловлю бо в системних шляхах його ж немає, я наче тричі перевіряв.

lib/gcc/mingw32/5.1.0 - не знаю що це і як співвідноситься з D:/MinGW/bin.

Насправді є D:\CodeBlocks\MinGW\lib\libmingw32.a.    Тобто саме такий шлях вірний.

D:\CodeBlocks\MinGW\mingw32\lib не має в собі папки /5.1.0/


А тобто є D:\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0      а от libmingw32.a в ньому неає,
хоча є всякі ліби *.a також.

Ну я не знаю всі ці шляхи тут не до чого, а може і саме в ніх справа або взагалі на що думати..

Post's attachments

mf.zip 1.88 kb, 63 downloads since 2020-05-17 

2 Востаннє редагувалося reverse2500 (18.05.2020 14:07:33)

Re: Makefile undefined reference to WinMain@16 в віндовсі

ress@WSL2:/mnt/f/tmp/mf$ make -f Makefile-1 -o helo
g++ main.cpp hello.cpp factorial.cpp -o hello

ress@WSL2:/mnt/f/tmp/mf$ ./hello
Hello World!
The factorial of 5 is 120

все працює, але в WSL2

спробуй в інклуд дописати

#include <windows.h>

3

Re: Makefile undefined reference to WinMain@16 в віндовсі

Підозрюю, що то не зовсім "порожній проєкт".

4

Re: Makefile undefined reference to WinMain@16 в віндовсі

WinMain це стандартна процедура gui программи, яку викликає CRT (передає управлiння). Не знаю що ще сказати, менi питання неясне взагалi. Збирайте з гуi кодеблокс без батнiкiв чи юзайте CMAKE.

5

Re: Makefile undefined reference to WinMain@16 в віндовсі

Можете файл проєкту додати?