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 |
|
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 ! |
|
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
|
|
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. |
|
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. |
|
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? |
|
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. |
|
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.
|
|
« 1 » 2 3 |