2016-02-27 17 views
5

Tôi đang sử dụng Microsoft Visual Studio 2015 trên Windows 8.1. Tôi muốn biên dịch một chương trình nhắm vào Windows XP. Tôi đã xem xét nó trên Google và các câu hỏi tương tự khác, nhưng không ai giúp đỡ. Trong cài đặt giải pháp, bộ công cụ nền tảng đích được đặt thành Windows XP, nhưng không có tùy chọn cho Windows XP trong phiên bản nền tảng đích. tôi đã đọc https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx (Sử dụng Headers Windows) và thêm những dòng này vào chương trình của tôi:Cách nhắm mục tiêu Windows XP trong Microsoft Visual Studio C++

#define WINVER _WIN32_WINNT_WINXP 
#define _WIN32_WINNT _WIN32_WINNT_WINXP 
#define NTDDI_VERSION NTDDI_WINXP 

Nhưng nó vẫn không hoạt động. Nó nói rằng nó không thể tìm thấy "MSVCP140.dll". Sau khi tôi nhận được dll này, nó bắt đầu phàn nàn về không thể tìm thấy "VC140.dll". Sau đó là "ucrtbased.dll", và sau đó cuối cùng "api-ms-win-core-string-11-1-0.dll", mà tôi thậm chí không có nó trong máy tính Windows 8.1 của tôi. Chương trình có thể chạy trên Windows 8.1, nhưng không chạy trên Windows XP. Tôi có thể làm gì để chương trình chạy trên Windows XP?

+0

fyi windows xp không hỗ trợ. –

+0

Cụ thể hơn về lỗi. –

+0

Windows XP không còn được hỗ trợ, và do đó các phiên bản của MS IDE sau khi nó chết không còn bao gồm hỗ trợ cho hệ điều hành đã chết đó. Nếu bạn muốn nhắm mục tiêu các hệ điều hành cũ, hãy sử dụng các phiên bản cũ của IDE. –

Trả lời

25

Để tạo EXE tương thích Windows XP với VS 2015 (hoặc VS 2012/VS 2013), bạn phải sử dụng Bộ công cụ nền tảng v140_xp thay vì Bộ công cụ nền tảng v140 mặc định.

Xem Project Properties, trang chung:

Property Page

Điều này là do mặc định vBulletin Toolset sử dụng Windows 8.1 SDK (hoặc bạn có thể chọn vào Windows 10 SDK), và chỉ hỗ trợ này xây dựng các ứng dụng cho Windows Vista trở lên. Khi bạn chọn v140_xp vBulletin Toolset, bạn đang sử dụng một phiên bản của Windows 7.1 SDK đó là phiên bản cuối cùng để hỗ trợ cho Windows XP hoặc Windows Server 2003.

Lưu ý rằng Visual Studio có thể nhắm mục tiêu Windows XP Service Pack 3 hoặc Windows Server 2003 Service Pack 2. Thời gian chạy C/C++ không tương thích với các phiên bản Windows cũ hơn.

Nếu bạn đang sử dụng DirectX trong ứng dụng của mình, điều này có một số ý nghĩa sâu sắc vì rất nhiều thay đổi giữa Windows 7.1 SDK và SDK Windows 8. Xem this post để biết chi tiết.

Với VS 2015, bạn cũng sẽ cần phải chọn hỗ trợ Windows XP trong Custom Install tùy chọn hoặc thông qua Chương Trình & Đặc điểm/Microsoft Visual Studio 2015/Change .../Sửa:

Modify

+1

Tôi đã đặt nó thành v140_xp nhưng vẫn không hoạt động. Nếu nó không được đặt thành v140_xp, nó cung cấp thông báo lỗi "xxxx.exe không phải là ứng dụng win32 hợp lệ". Nếu tôi đặt nó thành v140_xp, nó sẽ phàn nàn về các DLL bị thiếu mà tôi đã đề cập trong câu hỏi. – Tyler

+2

Bạn có đang thử chạy trên hệ thống Windows XP hoặc máy bạn đã cài đặt VS 2015 không? –

+1

Bạn đã cài đặt VC++ Redistributables trên máy tính mục tiêu chưa? Ví dụ: "C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ redist \ 1033 \ vcredist_x86.exe" – Pierre

Các vấn đề liên quan