[C++][WinApi] Grafika - "undefined reference to _imp_CreatePen", "id returned 1 exit status"...
Ostatnio zmodyfikowano 2014-04-29 17:11
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
|
|
maly |
» 2014-04-29 07:03:26 Dodaj do linkera bibliotekę gdi32. |
|
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? |
|
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 |
|
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. |
|
« 1 » |