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

[C++, WinAPI] Kompilacja statyczna - blad error LNK2019: unresolved external symbol

Ostatnio zmodyfikowano 2012-11-28 08:43
Autor Wiadomość
berkov
Temat założony przez niniejszego użytkownika
[C++, WinAPI] Kompilacja statyczna - blad error LNK2019: unresolved external symbol
» 2012-11-25 20:46:17
Witam...

Po odpaleniu swojego programu na innym kompie dostaje rozne bledy i program sie nie odpala. Jednym z nich jest np brakujacy: MSVCR110D.dll, na innym z koleji cos innego.

Doczytalem o kompilacji statycznej ktora zalacza wszystkie potrzebne dll do samego pliku wykonawczego (na wiekosci pliku mi nie zalezy).
Odnalazlem ta opcje we wlasciwiosciach mojego projektu (btw uzywam Micorosoft Visual Studio) w ustawieniach ogolnych w Use of MFC (choc to wcale nie MFC projekt tylko Win32 ale co tam...).
Zmienilem Use Standard Windows Libraries na Use MFC in a Static Library.
I tu dopiero zaczela sie jazda, 47 bledow!!! ostro!

Wczesniej bez problemu kompilowany program teraz wyrzucil dla kazdej predefiniowanej funkcji/makra z windows.h taki blad:
1>[NAZWAPLIKU].obj : error LNK2019: unresolved external symbol __imp__[NAZWA_FUNKCJI_Z_WINDOWS.H] referenced in function "int __stdcall [NAZWA_FUNKCJI_GDZIE_WYWOLANE](struct HWND__ *,unsigned int,unsigned int,long)" (?[NAZWA_FUNKCJI_GDZIE_WYWOLANE]@@YGHPAUHWND__@@IIJ@Z)

na jednym z wielu forum wyczytalem ze musze kazda ta funkcjie "zdefioniowac"??, ale dla mnie to nie ma sensu...
jak zmusic kompiltor by zalaczyl wszystko potrzebne i by byl w pelni "samodzielny"?

dzieki
berkov
P-69887
cyklopek11
» 2012-11-25 21:17:54
Skoro to nie jest project MFC to nie ustawiaj niczego związanego z MFC. Na 99,99% rozwiązanie Twojego problemu to:
(radze utworzyć nowy projekt)
a następnie jeśli masz Visual Studio 2010 to:
menu Project->Properties->Configuration Properties->C/C++ -> Code Generation -> Runtime Library:
zmień Multi-threaded dll na Multi-threaded.
Jeśli masz inną wersję to musisz poszukać ustawianie: Runtime Library


PAMIĘTAJ, że osobno ustawiasz dla wersji RELEASE i DEBUG !
P-69890
berkov
Temat założony przez niniejszego użytkownika
» 2012-11-25 21:21:54
No z tym MFC to juz byla desperacja bo tylko tu cos takiego znalazlem..
do C/C++ -> Code Generation nie dotarlem.. :-)

ok.. przestawilem, i kompiloator przepuscil.. z pliku 49kb zorbilo sie 181kb a to dobry znak.. jak dojade do domu do drugiego kompa to przetestuje i dam znac!
dzieki
P-69891
berkov
Temat założony przez niniejszego użytkownika
» 2012-11-25 23:41:29
super.. dziala.. nie wyskakuje blad o brakujacy bibliotekach...

ale sprawdzilem tez na windowsie jedno-rdzeniowym i tu pojawia sie inny blad. Ze program nie jest poprawna aplikacja Win32. wiem ze to juz troche inny watek, jutro poszperam po necie jak to jest z kompilacja dla win64 i win32.. ale gdybys wiedzial przypadkiem to bede wdzieczny...

dodam tylko ze kompiluje na windowsie 64 (i chodzi na innych win64)... ale zakladalem ze jesli wybralem projekt Win32 to skompilowane jest dla jednoprocesorowych windowsow dommyslnie i te powinny smigac bez problemu...

b.
P-69912
xevuel
» 2012-11-26 07:30:31
W Visualu domyślnie jest chyba kompilator tylko pod x86, żeby używać x86_64 trzeba zainstalować dodatkowe SDK - jeśli go nie instalowałeś, to nie wiem o co chodzi. W każdym razie, chyba najprostszy sposób sprawdzenia ilu bitowy jest program, to odpalenie programu, a następnie taskmgr.exe, przejście na zakładke Procesy. Jeśli po nazwie procesu pojawia się "*32", to proces jest 32bitowy.
P-69917
berkov
Temat założony przez niniejszego użytkownika
» 2012-11-26 07:44:56
A nie wpadlem na to.. rzeczywiscie jest tak jak myslalem - 32bit... kolo nazwy jest *32 w task menagarze.
To co moze oznaczac ten blad pod windowsami 32 jesli program jest rzeczywiscie napisany pod jeden procesor ale chodzi tylko pod winodwsami 64?
P-69918
Mrovqa
» 2012-11-26 08:33:25
Nieważnie czy masz procesor 32 czy 64-bitowy, ważne jaki masz system. Pod 32-bitowym systemem nie odpalisz (natywnie) aplikacji 64-bitowej.
P-69919
berkov
Temat założony przez niniejszego użytkownika
» 2012-11-26 09:56:22
To juz wiemy, ale aplikacja jest jak napisalem wyzej 32bitowa i chce ja odpalic na 32bitowym systemie a ten mowi ze aplikacja nie jest 32bitowa.
P-69922
« 1 » 2 3
  Strona 1 z 3 Następna strona