Khắc phục: Các chương trình được tạo trong Visual C++ 2013 sập "Bất hợp pháp hướng dẫn" ngoại trừ

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 3174417
Triệu chứng
Khi bạn tạo một chương trình bằng cách sử dụng Microsoft Visual C++ 2013, chương trình lỗi và bạn nhận được một ngoại lệ "Hướng dẫn bất hợp pháp". Điều này xảy ra do một số chức năng thư viện floating-point toán trong thời gian chạy Visual C++ 2013 x64 C (CRT) không đúng cách kiểm tra xem các hướng dẫn AVX và FMA3 có trước khi các chức năng cố gắng sử dụng chúng. Nếu không có sẵn để sử dụng hướng dẫn, các cuộc gọi các chức năng gây ra ngoại lệ bất hợp pháp hướng dẫn (0xc000001d). Chức năng bị ảnh hưởng bao gồm kí nhập, log10, pow, và những người khác.

Vấn đề này có nhiều khả năng xảy ra trong các trường hợp sau:
  • Một phiên bản cũ của hệ điều hành Windows, hỗ trợ AVX trạm đậu tiết kiệm (ví dụ: Windows Vista) nếu nó được sử dụng trên máy tính hỗ trợ tập lệnh AVX
  • Nếu AVX trạm đậu tiết kiệm rõ ràng vô hiệu hóa trong cấu hình khởi động hệ điều hành
  • Trong môi trường cài đặt chuyên biệt trước của Windows (Windows PE)

    Lưu ý Windows PE hỗ trợ AVX trạm đậu tiết kiệm.

Sự cố này xảy ra trên Microsoft Connect:

Nguyên nhân
Vấn đề này xảy ra vì thời gian chạy Visual C++ 2013 x64 C không kiểm tra xem hệ điều hành hỗ trợ AVX trạm đậu tiết kiệm trước khi cố gắng chạy hướng dẫn AVX hoặc FMA3.
Giải pháp
Nếu tất cả nhị phân C++ bị ảnh hưởng được tạo bằng cách sử dụng Visual C++ 2013 sử dụng C Runtime DLL (msvcr120.dll), cài đặt chuyên biệt bản cập nhật Microsoft Visual C++ 2013 Redistributable-12.0.40660.0 hoặc phiên bản mới hơn.

Nếu bạn những chương trình bị ảnh hưởng C++ tĩnh liên kết Visual C++ 2013 C chạy, bạn phải cập nhật cài đặt chuyên biệt Visual Studio 2013 cài đặt chuyên biệt 3174417 hotfix và xây dựng lại bố trí những chương trình bị ảnh hưởng.

Lưu ý: Sự cố này không ảnh hưởng đến các phiên bản cũ hơn của Visual C++ C Runtime (Visual C++ 2012 và các phiên bản). Sự cố được khắc phục trước khi phát hành ban đầu của CRT phổ biến sử dụng Visual C++ 2015.

Trung tâm Tải xuống của Microsoft

Để cập nhật liên kết tĩnh Visual C++ 2013 C Runtime, 3174417 hotfix được phát hành dưới dạng bản Cập Nhật chỉ tải xuống và không cung cấp thông qua Windows Update. Nó có sẵn tại web site Microsoft Download Center:

Tải xuốngTải xuống gói ngay bây giờ.

Cập nhật tự động được liên kết Visual C++ 2013 C Runtime dll, bản Cập Nhật redistributable có sẵn. Để biết thêm thông tin, hãy xem bài viết sau trong cơ sở kiến thức Microsoft:

Cách giải quyết khác
Towork quyết vấn đề này, vô hiệu hóa FMA3 trong thư viện toán nếu bạn bị ảnh hưởng bởi sự cố này. Bạn có thể truy vấn định hệ thống hỗ trợ hướng dẫn AVX gọiGetEnabledXStateFeatures và vô hiệu hoá AVX trong CRT rõ ràng bằng cách gọi _set_FMA3_enable(0).

Để biết thêm thông tin, hãy xem Làm việc với XState bối cảnh trên web site MSDN.

Chức năng _set_FMA3_enable(0) được công bố trong <math.h>và được cung cấp chỉ khi bạn xây dựng cho x64. (Này vấn đề ảnh hưởng đến chỉ x64 thư viện.) Điều này khiến thư viện toán trở lại bằng cách sử dụng triển khai FMA3. </math.h>

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 3174417 - Xem lại Lần cuối: 07/29/2016 07:13:00 - Bản sửa đổi: 1.0

Visual Studio 2013 Community Edition

  • kbfix kbqfe atdownload kbexpertiseadvanced kbsurveynew kbmt KB3174417 KbMtvi
Phản hồi