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

[MinGW]Ignorowanie domyślnych libów?

Ostatnio zmodyfikowano 2013-04-13 21:17
Autor Wiadomość
skovv
Temat założony przez niniejszego użytkownika
[MinGW]Ignorowanie domyślnych libów?
» 2013-04-12 18:22:01
Witam. Mam problem, mianowicie: w swoim projekcie używam HGE. Przy jego linkowaniu jest problem, trzeba ignorować "libc.lib" bo przeszkadza on w kompilacji. Wiem jak zrobić to w Visual Studio(http://relishgames.com/forum/index.php?p=/discussion/4168 /1link-fatal-error-lnk1104-cannot-open-file-libc.lib/p1), lecz jak zrobić to komendą w konsolce z użyciem g++ już niestety nie mam pojęcia :/ Szukałem, ale nie moge znaleźć tej komendy. Mógłby ktoś pomóc? Byłbym wdzięczny. ;)
P-80463
pekfos
» 2013-04-12 18:57:17
Może
-nostdlib
.
P-80465
skovv
Temat założony przez niniejszego użytkownika
» 2013-04-12 19:04:32
Próbowałem to, tyle że wtedy wywala mi takie cudo:

C:\MinGW\msys\1.0\src\mingwrt/../mingw/crt1.c:260: multiple definition of `mainC
RTStartup'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:C:\MinGW\msys\1.0\src\ming
wrt/../mingw/crt1.c:260: first defined here
AppCompiler.exe: In function `WinMainCRTStartup':
C:\MinGW\msys\1.0\src\mingwrt/../mingw/crt1.c:274: multiple definition of `WinMa
inCRTStartup'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:C:\MinGW\msys\1.0\src\ming
wrt/../mingw/crt1.c:274: first defined here
AppCompiler.exe: In function `atexit':
C:\MinGW\msys\1.0\src\mingwrt/../mingw/crt1.c:287: multiple definition of `atexi
t'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:C:\MinGW\msys\1.0\src\ming
wrt/../mingw/crt1.c:287: first defined here
AppCompiler.exe: In function `onexit':
C:\MinGW\msys\1.0\src\mingwrt/../mingw/crt1.c:295: multiple definition of `_onex
it'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:C:\MinGW\msys\1.0\src\ming
wrt/../mingw/crt1.c:295: first defined here
AppCompiler.exe:cygming-crtbegin.c:(.text+0x2bc): multiple definition of `__gcc_
register_frame'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/crtbegin.o:cygming-crtbegin.c:(.text+0x0):
 first defined here
AppCompiler.exe:cygming-crtbegin.c:(.text+0x348): multiple definition of `__gcc_
deregister_frame'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/crtbegin.o:cygming-crtbegin.c:(.text+0x8c)
: first defined here
AppCompiler.exe:crt1.c:(.bss+0x0): multiple definition of `_argc'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:C:\MinGW\msys\1.0\src\ming
wrt/../mingw/crt1.c:189: first defined here
AppCompiler.exe:crt1.c:(.bss+0x4): multiple definition of `_argv'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:C:\MinGW\msys\1.0\src\ming
wrt/../mingw/crt1.c:189: first defined here
AppCompiler.exe:fake:(.idata+0x1d0): multiple definition of `_imp___ZSt4cout'
AppCompiler.exe:fake:(.idata+0x1d0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/crtbegin.o:cygming-crtbegin.c:(.text+0x85)
: undefined reference to `_Jv_RegisterClasses'

C:\Documents and Settings\Skovv\Pulpit\EasyGame IDE\Engine>

Może pierw wyłączyć to std, potem jakoś włączyć tylko bez libc? Ciężka sprawa ;/
P-80467
skovv
Temat założony przez niniejszego użytkownika
» 2013-04-12 22:18:23
Ktoś jest w stanie pomóc? :/
P-80488
DejaVu
» 2013-04-13 00:17:42
Ścieżki, które bym sprawdzał:
1) przeprowadzić kompilację z dynamicznym linkowaniem bibliotek standardowych
2) przeprowadzić kompilację ze statycznym linkowaniem bibliotek standardowych
3) błędy w kodzie - multiple definition (bo źle są porobione include/pragma once/ifndef)
4) błędy w kodzie - multiple definition (bo źle są ustawione define'y)
5) błędy w kodzie - bo występują kilka razy definicje tych samych funkcji
6) dysponuję libem nieznanego pochodzenia (tj. nie wiem jaką wersją kompilatora była skompilowana) - skompilować bibliotekę ze źródeł tym samym kompilatorem z tymi samymi ustawieniami (tj. w tym samym trybie linkowania bibliotek standardowych itd).

Dla błędów które podałeś scenariuszy wbrew pozorom może być sporo. Poza tym link, który wkleiłeś nie nawiązuje do błędów wymienionych tylko do tego jak się linkuje bibliotekę.
P-80490
skovv
Temat założony przez niniejszego użytkownika
» 2013-04-13 00:23:02
Tak, właśnie do tego jak linkować bibliotekę. Aby jej używać potrzebne jest ignorowanie libc.lib. W VC++ Jest to proste, ale jak to wykluczyć w g++?
P-80492
DejaVu
» 2013-04-13 00:25:47
Lepiej skompiluj ze źródeł bibliotekę, którą używasz i wszystko będzie działało jak trzeba. Zazwyczaj używanie czyjegoś builda prędzej czy później odbija się czkawką...

Czy wspomniane błędy otrzymujesz tylko i wyłącznie po dolinkowaniu jakiejś 'dziwnej' biblioteki, czy też są one niezależnie od tego czy ją linkujesz czy też nie?
P-80493
skovv
Temat założony przez niniejszego użytkownika
» 2013-04-13 13:42:15
Korzystam z HGE. Dzieli się o na dwa liby: hge i hgehelp. Jeśli uzywam hge to wszystko gra, a jeśli dolinkuję hgehelp( czyli spriteye itp itd.. to co najważniejsze ) to wyskakuje ten błąd :|
P-80505
« 1 » 2
  Strona 1 z 2 Następna strona