2009-03-31 13 views
7

Jak opracować aplikację 64-bitową na 32-bitowym komputerze?Czy mogę zbudować aplikację x64 na komputerze 32-bitowym?

używam VS 2008 na WinXP 32 bit. Ustawiłem łącznik visual studio na/machine: x64 i utworzyłem konfiguracje x64. Wszystko będzie kompilować i łączyć OK, ale kiedy uruchomię program do obsługi zależności na exe, widzę 64-bitowy mscvr90.dll, itp. Wskazujący na wszystkie biblioteki DLL Win32, Kernel32.dll, Advapi32, Comdlg32, Gdi32, itp.

Po skopiowaniu pliku exe do uruchomienia w systemie Win64 jest on odrzucany "... konfiguracja aplikacji jest niepoprawna". Jak mam powiedzieć visualowi, żeby trzymał się z dala od 32-bitowego królestwa?

Odpowiedz

3
+0

Żadne z tych linków nie wydaje się odpowiednie dla rodzimych (mscvr90.dll) problemów w czasie wykonywania, a plakat ma już uporządkowaną część krzyżową? – snemarch

+0

@snemarch, myślisz, że nie brakuje niektórych składników 64-bitowych? –

+0

Jak zauważono w mojej odpowiedzi, myślę, że brakuje mu rodzimej redystyczki VS2008, a nie CLR :) – snemarch

0

Twój problem z „odrzucony” wykonywalny jest prawdopodobnie to, że brakuje prawidłowego pliku manifestu, i/lub że czasy pracy vc2008 nie zostały (prawidłowo) zainstalowane w systemie. Prawdopodobnie trzeba this runtime package (VS2008 rodzimych redystrybucyjnych wersji x64) w systemie docelowym, jeśli nie przy użyciu msi oparciu zainstalować.

Nawet w 64-bitowych systemach Windows, biblioteki DLL nadal mają swoje nazwy 32-bitowych (co imho był zły wybór, ponieważ oczywiście dezorientuje ludzi). Aplikacje 32-bitowe będą domyślnie miały% systemroot% \ system32 przekierowane do% systemroot% \ syswow64 (gdzie znajdują się 32-bitowe biblioteki DLL), natomiast aplikacje 64-bitowe nie zostaną przekierowane. Dostęp do rejestru przez aplikacje 32-bitowe również wiąże się z pewnym przekierowaniem. Oba mogą być wyłączone dla wątków za pomocą Wow64DisableWow64FsRedirection(), ale oczywiście nie pozwalają aplikacjom 32-bitowym ładować 64-bitowe biblioteki DLL.

+0

po prostu ciekawy, dlaczego uważasz, że to zły wybór? Czy to dlatego, że trudno stwierdzić, czy plik, którego szukasz, jest 32 czy 64-bitowy bez uruchamiania go lub używania narzędzia do sprawdzania pliku, czy innego? – JohnW

+0

John> Tak, to jeden z powodów. Moim największym zmartwieniem jest jednak przekierowanie, bardziej sensowne byłoby posiadanie systemu64. Używanie nazw * 32.dll dla aplikacji 64-bitowych niestety nie ma sensu (LoadLibrary + GetProcAddress). – snemarch

0

Ponieważ używasz VS2008, będzie trzeba albo skopiować pakiet REDIST wraz z aplikacją na komputerze testowym lub skompilować środowisko wykonawcze jako statyczne biblioteki w kodzie.

Powiązane problemy