Autor Wątek: [Solved]Mingw nie widzi kodu?  (Przeczytany 735 razy)

Offline Frondeus

  • Użytkownik

# Kwiecień 09, 2012, 15:26:58
Kiedyś próbowałem z poziomu linuxa kompilować grę dla windowsa. Wychodziło kiepsko, więc dałem sobie spokój.
Teraz wydawało mi się że jestem troche mądrzejszy, znam linuxa i sobię poradzę. No cóż, moje plany rozbiły się z hukiem o brutalną rzeczywistość. A co takiego zrobiłem:
1. instalacja mingw32 - pacman -S mingw32
2. instalacja sfml2 - za pomocą nieoficjalnego repo - yaourt -S mingw32-sfml-git . Najnowsza wersja pobierana z gita.
3. stworzenie makefile który za jednym zamachem zrobi i exe i plik linuxowy:
#Makefile
CC = g++
W32CC = i486-mingw32-g++ -L/usr/i486-mingw32/lib
OBJ = main.o
W32OBJ = main_w32.o
CFLAGS=-g
LFLAGS=-lsfml-audio -lsfml-graphics -lsfml-window -lsfml-system

.PHONY: clean

all: compo w32-compo
w32-compo: $(W32OBJ)
$(W32CC) $(LFLAGS)  $^ -o $@
compo: $(OBJ)
$(CC) $(LFLAGS) $^ -o $@

%_w32.o : %.cpp
$(W32CC) $(CFLAGS) -c $< -o $@
%.o : %.cpp
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f *.o
4. wywołanie "make"

Efektu się nie spodziewałem. Rozumiem gdybym nie zlinkował bibliotek, wtedy powinienem uzyskać błędy linkera w stylu:
undefined reference to `sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int)'Ale czemu pomimo że linkuje poprawną bibliotekę (dla Mingw32), dostaję brzydkie:
undefined reference to `__imp___ZN2sf9VideoModeC1Ejjj'
Problem leży w źle zainstalowanym mingw, źle skompilowanym SFML2 czy też może nie dodałem jakiejś bardzo ważnej flagi?
Dla linuxa kompilacja przebiegła gładko, więc kod problemem raczej nie jest.

#Rozwiązanie:
Jak to mówią... Mózg rozj... Dałem $(LFLAGS) na koniec komendy... i zadziałało. Ciekawi mnie jednak czemu GCC się nie pluło a mingw tak...
« Ostatnia zmiana: Kwiecień 09, 2012, 15:56:43 wysłana przez Frondeus »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych