2011-03-26 37 views
7

Chương trình Qt của tôi (g ++ 4.4.0) cho tôi lỗi Microsoft Visual C++ Runtime Library "Ứng dụng này đã yêu cầu Thời gian chạy chấm dứt nó theo cách khác thường" khi tôi đóng nó. Nhưng khi tôi chạy nó trong trình gỡ lỗi, tôi không nhận được thông báo lỗi. Có ai biết một cách để có được một số thông tin về vụ tai nạn? Hộp tin nhắn chỉ có một nút OK."Ứng dụng này đã yêu cầu Thời gian chạy để chấm dứt nó theo cách khác thường."

Đã chỉnh sửa để thêm: Làm theo lời khuyên của Wimmel, tôi đính kèm với trình gỡ lỗi. Có hai luồng còn lại, với ThreadID 1 và 3. Các ngăn xếp trông như thế này:

Level Function    File       Line Address 
0  VTagOutput   C:\Windows\syswow64\user32.dll 0 0x7529438d 
1  VTagOutput   C:\Windows\syswow64\user32.dll 0 0x7529438d 
2  USER32!EmptyClipboard C:\Windows\syswow64\user32.dll 0 0x752a2674 
3  ??             0 

Level Function         File       Line Address 
0  ntdll!LdrFindResource_U      C:\Windows\SysWOW64\ntdll.dll 0 0x76f5000d 
1  ntdll!LdrSetAppCompatDllRedirectionCallback C:\Windows\SysWOW64\ntdll.dll 0 0x76fdfabe 
2  ??                  0 0x7b9609b5 
3  ??                  0 

Có lẽ luồng thứ hai đang hiển thị thông báo lỗi? Việc đầu tiên là một chút lạ: hai hàng đầu là giống hệt nhau. Tôi không có gì trong mã của mình có tên là TagOutput và không phải là Qt.

+1

Có lẽ bạn có thể đính kèm các trình gỡ lỗi trước khi nhấn OK, và xem stack frame của tất cả các chủ đề để xem lỗi ở đâu đến từ đâu. – wimh

+0

Tất cả các ký hiệu bạn đang xem đều là từ các DLL hệ thống. Bạn đã bao gồm thông tin gỡ lỗi trong bản dựng của mình chưa? –

+0

@Alan: Có. Tôi nghi ngờ chương trình đã biến mất và đây chỉ là cơ chế báo cáo lỗi của hệ thống. – TonyK

Trả lời

3

Lần duy nhất tôi từng thấy thông báo lỗi với Qt là lần đầu tiên tôi thử thiết lập môi trường phát triển Qt và đã cài đặt một số phiên bản khác nhau của MinGW. Dường như tệp thực thi của tôi đã tìm và tải phiên bản mingwm10.dll không đồng ý với mọi thứ khác. Tôi săn lùng và loại bỏ tất cả các phiên bản của dll đó ngoại trừ một phiên bản mà tôi muốn và vấn đề biến mất.

+0

Tôi đã săn lùng chúng, và có sáu (!) Trong số chúng, trong ba phiên bản khác nhau. Làm thế nào bạn quyết định cái nào bạn muốn? – TonyK

+0

Điều đó sẽ phụ thuộc nhưng hãy thử điều này. Nếu bạn đang sử dụng SDK Qt, bạn có thể muốn có SDK được bao gồm trong SDK. Một phương pháp xảy ra với tôi là sao chép từng tệp dll mà bạn tìm thấy vào cùng thư mục với tệp thực thi và thử từng thư mục một, mỗi lần một cho đến khi bạn xác định được tệp tương thích. Nếu thực sự, đây là nguyên nhân. –

+0

Cảm ơn mẹo. Nhưng chỉ có một mingwm10.dll trong đường dẫn của tôi, và nó đi kèm với Qt, vì vậy tôi không nghĩ rằng điều này có thể là vấn đề. Trong khi đó chương trình đã ngừng rơi, sau khi một số thay đổi dường như không liên quan đã được thực hiện. Vì vậy, nó ẩn nấp trong đó ... – TonyK

0

Sử dụng procmon.exe và lọc tên quy trình và quyền truy cập tệp để tìm Thiếu phụ thuộc.

Tôi đã gặp sự cố tương tự với Qt 5.0.1.
Chương trình thiếu một số dll từ khung công tác Qt.
tôi tìm thấy họ trong Danh bạ:

<QTINSTALLDIR>\Qt5.0.1\5.0.1\mingw47_32\plugins 
Các vấn đề liên quan