Kiedy używam programu Visual Studio 2012 z automatycznym łączeniem, nie muszę ręcznie dodawać bibliotek boost/POCO/python, będą one dodawane automatycznie. I jeśli przegapić żadnej biblioteki, otrzymuję wiadomość tak:W jaki sposób automatyczne łączenie zwiększa wybór?
LINK : fatal error LNK1104: cannot open file 'libboost_system-vc110-mt-1_55.lib'
Ale skąd wie, który plik chcę połączyć? Może chcę dynamicznie łączyć, używając boost_system-vs110-mt-1_55.lib, lub chcę mieć z gd lub sgd w nazwie?
Jak dokonuje wyboru?
Problem polega na tym, że mój program szuka bibliotek libboost_ ... (tj. Statycznych), gdy szuka systemu, wątków itp., Ale chce boost_ (tj. Dynamiczny) dla Pythona, a ja po prostu nie rozumiem czemu?
jeśli przez "auto-linking" odnosi się do korzystania z biblioteki dll, to nie zwalnia również z linkowania .libs. Aby korzystać z bibliotek dll w środowisku wykonawczym, musisz znać zawartość tych bibliotek dll podczas kompilacji, i to tutaj wkraczają pliki .lib. Jeśli chodzi o wersję, środowisko wykonawcze i mt/md (jakiego rodzaju moduł środowiska wykonawczego kompilujesz, możesz go zobaczyć w opcjach VS dla twojego projektu), powinieneś najpierw sprawdzić projekt, aby zdecydować. –
Tak, rozumiem, jak dokonać wyboru samodzielnie, kompilując ten projekt przy użyciu MinGW Nie mam problemu. Ale Visual Studio bierze na siebie wybór, więc NIE MOŻEMY wybrać, robi to dla mnie. I zastanawiam się, dlaczego to taki wybór. Moje pytanie naprawdę brzmi - w jaki sposób Visual Studio dokonuje wyboru i jak sobie z tym poradzić? – Arkady
Możesz to kontrolować również z VS, spójrz na Linker-> Panel wprowadzania dla .libs dołączonych podczas łączenia, a także w Linkerze-> Ogólne-> Dodatkowe katalogi łączące (IIRC) –