Problem z kompilacją przez MinGW

0

Chciałbym utworzyć pliki obiektowe z .rc, .cpp a następnie je zlepić i skompilować do PE.

@echo off
:start
	cls
	set folder="C:\\Users\\bociek\\Desktop\\rysuj"
	windres.exe -i rysowanie.rc -o obj\\rysowanie-res.o
	cd "C:\\MinGW\\bin\\"
	g++ -static -mwindows "%folder%\\rysowanie.cpp" -o "%folder%\\obj\\rysowanie.o"
	g++ -o "%folder%\\release\\program.exe" "%folder%\\obj\\rysowanie-res.o" "%folder%\\obj\\rysowanie.o" 
pause
0

Oto problem, sory za double, zapomniałem..

C:\\Users\\Vincent\\Desktop\\rysuj\\obj\\rysowanie.o:crt1.c:(.text+0x280): multi
ple definition of `mainCRTStartup'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../crt2.o:crt1.c:(.text+0x280): firs
t defined here
C:\\Users\\Vincent\\Desktop\\rysuj\\obj\\rysowanie.o:crt1.c:(.text+0x2a0): multi
ple definition of `WinMainCRTStartup'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../crt2.o:crt1.c:(.text+0x2a0): firs
t defined here
C:\\Users\\Vincent\\Desktop\\rysuj\\obj\\rysowanie.o:crt1.c:(.text+0x2c0): multi
ple definition of `atexit'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../crt2.o:crt1.c:(.text+0x2c0): firs
t defined here
C:\\Users\\Vincent\\Desktop\\rysuj\\obj\\rysowanie.o:crt1.c:(.text+0x2d0): multi
ple definition of `_onexit'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../crt2.o:crt1.c:(.text+0x2d0): firs
t defined here
C:\\Users\\Vincent\\Desktop\\rysuj\\obj\\rysowanie.o:cygming-crtbegin.c:(.text+0
x2e0): multiple definition of `__gcc_register_frame'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/crtbegin.o:cygming-crtbegin.c:(.text+0x0):
 first defined here
C:\\Users\\Vincent\\Desktop\\rysuj\\obj\\rysowanie.o:cygming-crtbegin.c:(.text+0
x36c): multiple definition of `__gcc_deregister_frame'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/crtbegin.o:cygming-crtbegin.c:(.text+0x8c)
: first defined here
C:\\Users\\Vincent\\Desktop\\rysuj\\obj\\rysowanie.o:crt1.c:(.bss+0x4): multiple
 definition of `_argc'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../crt2.o:crt1.c:(.bss+0x4): first d
efined here
C:\\Users\\Vincent\\Desktop\\rysuj\\obj\\rysowanie.o:crt1.c:(.bss+0x0): multiple
 definition of `_argv'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../crt2.o:crt1.c:(.bss+0x0): first d
efined here
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: c:/mingw/b
in/../lib/gcc/mingw32/4.7.2/../../../crt2.o: bad reloc address 0x20 in section `
.eh_frame'
0

spróbuj wywalić to -static.

0

Niby gdzie? Przecież wstawiłem, a teraz aktualizacja.

@echo off
:start
	cls
	set folder="C:\\Users\\Vincent\\Desktop\\rysuj"
	windres.exe -i rysowanie.rc -o obj\\rysowanie-res.o
	
	echo Hia1:
	cd "C:\\MinGW\\bin\\"
	g++ -static -Wall -Wextra -lmingw32 "%folder%\\rysowanie.cpp" -o "%folder%\\obj\\rysowanie.o"
	
	echo Hia2:
	g++ -o "%folder%\\release\\program.exe" "%folder%\\obj\\rysowanie-res.o" "%folder%\\obj\\rysowanie.o" 
pause
C:\\Users\\Vincent\\Desktop\\rysuj\\rysowanie.cpp:21:12: warning: unused paramet
er 'hInstance' [-Wunused-parameter]
C:\\Users\\Vincent\\Desktop\\rysuj\\rysowanie.cpp:21:12: warning: unused paramet
er 'nCmdShow' [-Wunused-parameter]
C:\Users\Vincent\AppData\Local\Temp\ccz1mYiL.o:rysowanie.cpp:(.text+0x16a): unde
fined reference to `SetPixel@16'
collect2: ld returned 1 exit status
g++: error: C:\\Users\\Vincent\\Desktop\\rysuj\\obj\\rysowanie.o: No such file o
r directory
Aby kontynuować, naciśnij dowolny klawisz . . .
0

Niby gdzie? Przecież wstawiłem

Napisałem "spróbuj wywalić" a nie "spróbuj wstawić".

C:\Users\Vincent\AppData\Local\Temp\ccz1mYiL.o:rysowanie.cpp:(.text+0x16a): undefined reference to SetPixel@16'Co to jestSetPixel`? Twoja funkcja, czy jakaś standardowa?
Brakuje jakiejś libki w parametrach linkera.

PS. przerób to lepiej na normalny makefile...

1 użytkowników online, w tym zalogowanych: 0, gości: 1