2013-04-10 24 views
12

Có cách nào để sử dụng v110_xp bộ công cụ (thay vì mặc định "v110") khi biên dịch bằng "nmake"?VS2012 nmake sử dụng bộ công cụ v110_xp?

Tôi đang cố biên dịch thư viện Qt5 cho VisualStudio2012 và tôi cũng cần nó để hoạt động trên máy Windows XP. Tôi đã quản lý để biên dịch tất cả các thư viện Qt5 bằng cách sử dụng VS2012 với nmake, nhưng thậm chí các ứng dụng thử nghiệm đơn giản không chạy trên các máy XP cho tôi "Điểm nhập thủ tục _except_handler4_common không thể nằm trong thư viện liên kết động msvcrt.dll". (Trên Windows 7 máy ứng dụng thử nghiệm của tôi hoạt động bình thường)

+0

Có điều gì đó nghiêm túc borked trong makefiles của bạn nếu bạn kết thúc với một phụ thuộc vào msvcrt.dll. Thư viện nhập khẩu cuối cùng đã sử dụng nó biến mất 10 năm trước. Rất khó đoán xem điều này có thể xảy ra như thế nào. –

+0

Hans Passant cảm ơn cho một bình luận, nhưng (chỉ là một ví dụ) Qt5Core.dll Qt chính thức có một sự phụ thuộc cho Ole32.dll, và nó có một phụ thuộc cho msvcrt.dll. Điều này có thể được nhìn thấy rõ ràng bằng cách sử dụng phần mềm "Phụ thuộc Walker" (http://www.dependencywalker.com/) Sẽ thực sự tốt đẹp để làm một số thử nghiệm và biên dịch Qt bằng cách sử dụng "v110_xp" toolset thay vì "v110" ... chỉ Bây giờ tôi không chắc chắn làm thế nào để làm điều đó và nếu điều này là có thể ở tất cả ... – Gediminas

+0

Nó vẫn không có ý nghĩa và v110_xp chắc chắn sẽ không tạo sự khác biệt. Cách duy nhất qt5core.dll có thể kết thúc với một phụ thuộc vào msvcrt.dll là khi nó được xây dựng với mingw. –

Trả lời

5
  1. Sửa Makefile. debug hoặc Makefile.Release tập tin
  2. Thêm -D_USING_V110_SDK71_ để định nghĩa

Ví dụ:

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

Chúc may mắn!

2

Chỉnh sửa mkspecs \ win32-msvc2012 \ qmake.conf dễ dàng hơn trước khi bạn chạy cấu hình. Chỉnh sửa các định nghĩa + = dòng và thêm dòng sau:

WIN32 _USING_V110_SDK71_ 

Bạn sẽ phải cất giấu và bật sự thay đổi này bất cứ khi nào bạn kéo.

1

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

Sẽ dễ dàng hơn khi chạm vào tệp.

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