Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++][WinApi] Grafika - "undefined reference to _imp_CreatePen", "id returned 1 exit status"...

Ostatnio zmodyfikowano 2014-04-29 17:11
Autor Wiadomość
barti2287
Temat założony przez niniejszego użytkownika
[C++][WinApi] Grafika - "undefined reference to _imp_CreatePen", "id returned 1 exit status"...
» 2014-04-28 21:59:45
Witam,

Mam problem z programem, który ma na celu umożliwienie użytkownikowi rozwiązanie problemu wież hanoi.
Z tego co zdołałem się już dowiedzieć problem nie wynika z mojego błędu, lecz z błędu linkera.
Jestem BARDZO początkujący w programowaniu, więc nawet nie wiem co to jest linker...
Niestety żaden z wielu tematów znajdujących się na tym forum nie pomógł mi. Posunąłem się nawet do zainstalowanie nowego środowiska programistycznego Code::Blocks. Obecnie używam Dev C++, choć tylko do tego programu. Wcześniej używałem Visual Studio Express 2013, lecz niestety w wyniku błędu, który ponoć miał związek z użyciem przeze mnie starego kodowania (nie wiedziałem jak zmienić nowe na stare i dałem się na spokój) musiałem skorzystać z innego kompilatora.
Poniżej załączam listę błędów, których niemożność zrozumienia mnie przeraziła...
Bardzo proszę wszystkich o wytłumaczenie mi w jak najprostszy sposób jak rozwiązać ten problem.


3 12 C:\Users\user\Desktop\1. Wieże Hanoi - rozwiązywanie (WinApi).cpp [Warning] deprecated conversion from string constant to 'LPSTR {aka char*}' [-Wwrite-strings]
C:\Users\user\AppData\Local\Temp\ccF9puhV.o 1. Wieże Hanoi - rozwiązywanie (WinApi).cpp:(.text+0x5b3): undefined reference to `__imp_CreatePen'
C:\Users\user\AppData\Local\Temp\ccF9puhV.o 1. Wieże Hanoi - rozwiązywanie (WinApi).cpp:(.text+0x5cb): undefined reference to `__imp_SelectObject'
C:\Users\user\AppData\Local\Temp\ccF9puhV.o 1. Wieże Hanoi - rozwiązywanie (WinApi).cpp:(.text+0x5ed): undefined reference to `__imp_MoveToEx'
C:\Users\user\AppData\Local\Temp\ccF9puhV.o 1. Wieże Hanoi - rozwiązywanie (WinApi).cpp:(.text+0x608): undefined reference to `__imp_LineTo'
C:\Users\user\AppData\Local\Temp\ccF9puhV.o 1. Wieże Hanoi - rozwiązywanie (WinApi).cpp:(.text+0x62a): undefined reference to `__imp_MoveToEx'
C:\Users\user\AppData\Local\Temp\ccF9puhV.o 1. Wieże Hanoi - rozwiązywanie (WinApi).cpp:(.text+0x645): undefined reference to `__imp_LineTo'
C:\Users\user\AppData\Local\Temp\ccF9puhV.o 1. Wieże Hanoi - rozwiązywanie (WinApi).cpp:(.text+0x667): undefined reference to `__imp_MoveToEx'
C:\Users\user\AppData\Local\Temp\ccF9puhV.o 1. Wieże Hanoi - rozwiązywanie (WinApi).cpp:(.text+0x682): undefined reference to `__imp_LineTo'
C:\Users\user\AppData\Local\Temp\ccF9puhV.o 1. Wieże Hanoi - rozwiązywanie (WinApi).cpp:(.text+0x696): undefined reference to `__imp_SelectObject'
C:\Users\user\AppData\Local\Temp\ccF9puhV.o 1. Wieże Hanoi - rozwiązywanie (WinApi).cpp:(.text+0x6ae): undefined reference to `__imp_SelectObject'
C:\Users\user\AppData\Local\Temp\ccF9puhV.o 1. Wieże Hanoi - rozwiązywanie (WinApi).cpp:(.text+0x6be): undefined reference to `__imp_DeleteObject'
c:\1. bartosz porzeziński\2. programy\3. dev c++\mingw64\x86_64-w64-mingw32\bin\ld.exe C:\Users\user\AppData\Local\Temp\ccF9puhV.o: bad reloc address 0x0 in section `.data'
C:\Users\user\Desktop\collect2.exe [Error] ld returned 1 exit status
P-108881
maly
» 2014-04-29 07:03:26
Dodaj do linkera bibliotekę gdi32.
P-108897
barti2287
Temat założony przez niniejszego użytkownika
» 2014-04-29 15:39:25
Niestety, nie zadziałało.

Najprawdopodobniej po prostu źle dodałem tą bibliotekę do linkera, ponieważ najzwyczajniej w świecie nigdy tego nie robiłem. Zaznaczając, że używam Dev C++ 5.6.2 podaję poniżej listę czynności które wykonałem. Bardzo proszę o odpowiedź co zrobiłem źle.

1. Z menu wybrałem pozycję "Uruchom".
2. Następnie kliknąłem w okienku przycisk "Parametry...".
3. Pokazało mi się okienko z jednym zablokowanym polem i jednym z możliwością wpisania do niego tekstu.
4. Do tego drugiego wpisałem "gdi32". Próbowałem także "gdi32;", "-gdi32" i "-gdi32;".
5. Nacisnąłem przycisk "Ok".
6. Skompilowałem program (nic to nie dało).

Czy to może być wina tego, że nie mam założonego projektu, tylko to jest zwykły plik cpp?
P-108913
Revo
» 2014-04-29 16:11:37
Proponuję przesiąść się na Code::Blocks. Jest to błąd mówiący o tym iż linker nie może znaleźć ciała funkcji np "CreatePen" itp. Kolega maly dobrze poradził. Nie używam DevC++, ale z tego co mi się wydaję to :

1. W głównym oknie programu lewy alt + p. Pokazuje się Project Options.
2. Zakładka Parameters.
3. W polu edycji Linker dopisujesz -lgdi32. Bez kropki
4. Klikasz OK.

Podałem przepis w odniesieniu się do DevC++ w wersji 4.9.9.2
P-108914
barti2287
Temat założony przez niniejszego użytkownika
» 2014-04-29 17:11:01
Dziękuję za pomoc, udało mi się.

Tak jak przypuszczałem, trzeba było stworzyć nowy projekt (dopiero wtedy można było wejść w opcje projektu).

Zamykam.
P-108917
« 1 »
  Strona 1 z 1