2013-04-10 18 views
12

Czy istnieje sposób użycia zestawu narzędzi v110_xp (zamiast domyślnego "v110") podczas kompilacji z "nmake"?VS2012 nmake przy użyciu zestawu narzędzi v110_xp?

Próbuję skompilować bibliotekę Qt5 dla VisualStudio2012 i potrzebuję jej również do pracy na komputerach z systemem Windows XP. Mam managet do kompilowania wszystkich bibliotek Qt5 za pomocą VS2012 z nmake, ale nawet proste aplikacje testowe nie działają na komputerach XP, co daje mi "Punkt wejścia procedury _except_handler4_common nie może być zlokalizowany w bibliotece msvcrt.dll z dynamicznym łączem msdcrt.dll". (na Windows 7 maszyn moja aplikacja test działa normalnie)

+0

W plikach makefiles jest coś poważnie zranionego, jeśli pojawi się zależność od msvcrt.dll. Ostatnia biblioteka importowania, z której korzystano, zniknęła 10 lat temu. Trudno odgadnąć, jak to się mogło stać. –

+0

Hans Passant dziękuje za komentarz, ale (tylko przykład) oficjalny Qt's Qt5Core.dll ma zależność dla Ole32.dll i ma zależność dla msvcrt.dll. Widać to wyraźnie za pomocą oprogramowania "Dependency Walker" (http://www.dependencywalker.com/). Naprawdę byłoby miło robić eksperymenty i kompilować Qt przy użyciu zestawu narzędzi "v110_xp" zamiast "v110" ... na razie nie jestem pewien jak to zrobić i jeśli jest to w ogóle możliwe ... – Gediminas

+0

To wciąż nie ma sensu, a v110_xp z pewnością nie będzie miało znaczenia. Jedynym sposobem, w jaki qt5core.dll może skończyć się zależnością od msvcrt.dll, jest moment, w którym została ona zbudowana z mingw. –

Odpowiedz

5
  1. Edycja Makefile. Debug lub Makefile.Release plik
  2. Dodaj -D_USING_V110_SDK71_ do definiuje

Przykład:

DEFINES = -D_USING_V110_SDK71_ -DUNICODE -DWIN32 -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG

Powodzenia!

2

Łatwiej jest edytować plik mkspecs \ win32-msvc2012 \ qmake.conf przed uruchomieniem configure. Edycja definiuje + = linia i dodać następujące:

WIN32 _USING_V110_SDK71_ 

Trzeba będzie ukryta i pop tę zmianę, gdy można wyciągnąć.

1

nmake /E CC="cl /D_USING_V110_SDK71_ /D_WIN32_WINNT=0x0501" /f Makefile.vc

Jest to znacznie łatwiejsze, gdy trudno jest dotknąć plik make.