VCMI Source

#1

Witam, dawno mnie nie było, postanowiłem wrócić do ponownego skrypcenia i grzebania przy VCMI. Zaaktualizowałem wszystkie pliki kodu źródłowego i teraz pytanie, czy potrzebuje VCMI 2011? Mogę mieć lekko pliki pomieszane i pokazuje mi projekt na wersje 2010 ale mi jej nie odpala.

#2

Okej usunięcie wszystkich plików pomogło, załadowałem boosta. Niestety dostaje taki błąd:

1>------ Build started: Project: VCMI_lib, Configuration: Debug Win32 ------
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(511,5): error MSB8008: Specified platform toolset (v110) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

#3

Przestaw we właściwościach wszystkich projektów (możesz je naraz zaznaczyć) platform toolset na v100 (Visual Studio 2010).

Niemniej ostrzegam — starego Visuala (2010) chyba już nikt z deweloperów nie używa i możesz natrafić na jakieś drobne problemy. Chcemy wkrótce (miesiąc/parę) ostatecznie porzucić wsparcie wersji 2010.

#4

Więc czas zainstalować 2012 :wink:

Dzięki za pomoc

#5

Do usług. :slight_smile:
Jakbyś napotkał inne problemy, służę pomocą.

#6

Witam, niestety mam kolejny problem, podczas kompilacji wyskakuje błąd, że w projekcie brakuje plików: winsock2.h i window.h. Nie powinny być razem z VS?

#7

To dziwne. Powinny być razem z VS i być automatycznie widoczne.
Albo domyślna lokacja jest błędna (mogło się coś skaszanić przy przenoszeniu ustawień z VC 2010), albo gdzieś skasowało jej dziedziczenie.

Wejdź we właściwości któergokolwiek z projektów -> VC++ directories -> Include directories -> l-klik, przycisk z prawej i

  1. Jaka jest zawartość pola Inherited Values?
  2. Czy checkbox Inherit from parent or project defaults jest zaznaczony? Powinien.
  3. Kliknij na przycisk Macros. Czy jest obecny wpis $(WindowsSDK_IncludePath)? Czy jego wartość jest ścieżką, gdzie faktycznie masz Windows.h? Jeśli nie — zrób search na dysku i sprawdź, gdzie naprawdę windows.h się znajduje.

Jeśli jest, udaj się property sheet w którym dodawałeś Boosta i tam powtórz pkt 1 i 2.

#8

Inherited Values:

$(SolutionDir)..\include
C:\c++\boost_1_47_0
$(VCInstallDir)include
$(WindowsSdkDir)include
$(FrameworkSDKDir)\include
  1. teraz zaznaczyłem
    3.jest wpisany i jest ścieżka która prowadzi do windows.h

Żadnych zmian nie uświadczyłem. Ale spróbuję zrebuildować.

żadnych zmian, nadal nie widzi.

Mam w property managerze we wszystkich property sheetach zmienić te include i libraries?

#9

We właściwościach wszystkich projektów i wszystkich property sheets ta opcja (Inherit from parent…) musi być zaznaczona. Wtedy powinno łapać.

(domyślnie jest. nie skasowałeś jej jakoś, np. wklejając ścieżkę i usuwają, co było wczesniej?)

#10

Nic nie zmieniałem. Dla pewności, ściągnąłem pliki zmodyfikowane jeszcze raz.

#11

Witam z powrotem. Pomogło na sztywno wpisanie do VS lokalizacji bibliotek.
Jednak mam nowy problem i mam nadzieję, że ostatni.
Dostaje błąd:

cannot open file "kernel32.lib"

Plik jest, jak widać po błędzie, ale nie może go odczytać.

Żartowałem jednak to nie koniec, udało mi się to naprawić, lecz teraz mam problem z boostem o.O, jeden z kilku: [code] Error 2 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in BattleAction.obj C:\VCMI source\trunk\lib\libboost_filesystem-vc100-mt-gd-1_47.lib(path_traits.obj) VCMI_lib [/code]
#12

Próbujesz linkować Boosta z Visuala 10 do VCMI budowanego Visualem 11. Tak nie zadziała. C++ nie ma ustandaryzowanego ABI i przez to biblioteki C++ musza być budowane tym samym kompilatorem, co projekt z nich korzystający.

Zbuduj Boosta wg instrukcji z wiki, albo pobierz gotowe binarki: sourceforge.net/projects/boost/f … -binaries/
32-bitowy build Visualem 2012 to wersja “msvc-11.0-32.exe”.