2008-10-20 44 views
17

Tôi có một vấn đề với Visual C++ 2008. Tôi đã cài đặt opencv và tôi đã tạo ra một chương trình mới và tôi xây dựng nó không có lỗi. Tuy nhiên, nó phàn nàn về việc không tìm thấy MSVCR90D.dll khi gỡ lỗi. Trong chế độ phát hành, không có vấn đề gì cả.MSVCR90D.dll không tìm thấy trong chế độ gỡ lỗi với Visual C++ 2008

Tôi có MSVCR90D.dll trong một trong các thư mục Winsxs. Có ai biết một vấn đề xung quanh vấn đề này không? Đây có phải là một lỗi được biết đến?

Gerard

+1

Tôi gặp vấn đề tương tự. Kể từ ngày 18-07-2009, không có câu trả lời cụ thể nào trả lời câu hỏi. Đó là lý do tại sao tôi hỏi lại ở đây http://stackoverflow.com/questions/1150464 –

+0

bản sao có thể có của [msvcr90d.dll không tìm thấy trong chế độ gỡ lỗi] (http://stackoverflow.com/questions/1150464/msvcr90d-dll-not -found-in-debug-mode) –

Trả lời

9

Có một số giải pháp tiềm năng được mô tả trong forum post này. Xem nếu có sự giúp đỡ nào.

Một gợi ý từ đó:

Đến% Hệ thống lái% \ Windows \ WinSxS và tìm kiếm thư mục x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456

Nếu doesn này Không tồn tại, hãy vào cài đặt VS và đảm bảo bạn có tất cả thư viện được cài đặt trong VC++.

Và một số khác:

tôi đã cùng một vấn đề, nhưng cố định nó bằng cách tắt gia tăng liên kết (các thuộc tính dự án ... Linker ... chung ... Enable Incremental Liên kết : Không).

Xác nhận mới nhất:

Dự án được xây dựng trên một phần mềm gắn ổ phàn nàn về một thiếu MSVCR90D.dll. Vấn đề sẽ biến mất nếu bạn tắt liên kết gia tăng (và xây dựng lại tất cả, tất nhiên).

+1

Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn. Nó đã làm việc!! Tuy nhiên, tôi có thể gặp bất kỳ sự cố nào khi thiết lập liên kết gia tăng không? Điều gì khác biệt nó làm? Cảm ơn bạn một lần nữa –

+0

Từ MSDN: Một chương trình được liên kết gia tăng có chức năng tương đương với một chương trình được liên kết nonincmentmentally. Đây là điểm quan trọng. Đọc thêm tại http://msdn.microsoft.com/en-us/library/4khtbfyf(VS.80).aspx. –

+0

Đã tắt liên kết gia tăng (OGRE3D) và nó hoạt động. Cảm ơn +1 –

0

Đây là một trong những lý do tôi liên kết tĩnh; EXE lớn hơn nhưng tôi chưa bao giờ có một vấn đề phụ thuộc như thế này trước đây. Có lẽ đáng giá một câu hỏi trong chính nó mặc dù ...

+0

"Có lẽ đáng giá một câu hỏi trong chính nó mặc dù" Trong khi tôi không đồng ý về quan điểm bạn thể hiện, tôi đồng ý hoàn toàn với kết luận của bạn ...^_^ – paercebal

2

Khó khăn vấn đề DLL dễ dàng hơn nhiều với phụ thuộc Walker. Nó cho phép bạn để hồ sơ ứng dụng của bạn, bắt cả hai DLL được nạp lúc khởi động và DLL được tải sau này. Nó sẽ nhổ ra rất nhiều thông điệp liên quan đến việc tải các tệp DLL, hoặc không thể tải chúng. Nó cũng hiểu được tải SxS của DLL.

Bạn có thể chuyển EXE làm đối số cho Depends.EXE và nó sẽ cấu hình ứng dụng đó. Điều này có thể được kết hợp với hầu hết các IDE. Ví dụ, trong Visual Studio bạn có thể thiết lập "Command for Debugging". Theo mặc định, đó là EXE của riêng bạn. Thay đổi nó thành depends.EXE và đặt đối số lệnh thành (ít nhất) /pb your.debug.exe.

4

Có cùng một vấn đề tôi tìm thấy một bài đăng dẫn tôi đến các DLL gỡ lỗi trong bản cài đặt VS9.0. Đối với cài đặt mặc định, họ đã ở: C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT.

Có ba tệp DLL và tệp kê khai. Bạn có thể thêm chúng vào thư mục System32 của bạn, thêm thư mục vào biến môi trường PATH hoặc sao chép các tệp vào cùng một thư mục như tệp thực thi của bạn khi gỡ lỗi.

Liên kết gia tăng tăng tốc các bản dựng của bạn (trình liên kết chỉ tái liên kết các lib đã thay đổi thay vì liên kết lại toàn bộ dự án). Nếu không, nó sẽ không ảnh hưởng đến kết quả xây dựng. Đối với một dự án lớn, tôi sẽ không khuyên bạn nên tắt liên kết gia tăng.

+0

Giải pháp này làm việc cho tôi. –

+0

điều này làm việc cho tôi. Tôi chỉ cần sao chép các DLL và nó chạy ok. Tuy nhiên, việc sao chép các lib có thể không phải là một lựa chọn tốt và cũng không thêm một thư mục bổ sung vào biến PATH (cần phải khởi động lại PC). Có cách nào tốt hơn so với những ?? –

0

tôi đã có vấn đề:

Không thể tải tập tin hoặc lắp ráp 'AudioInterface, Version = 1.0.3548.29920, Văn hóa = trung tính, PublicKeyToken = null' hoặc một trong các phụ thuộc của nó. Ứng dụng này đã không khởi động được do cấu hình ứng dụng không chính xác. Cài đặt lại các ứng dụng có thể khắc phục vấn đề này. (Ngoại lệ từ HRESULT: 0x800736B1)

AudioInterface là tên của dự án C++ của tôi.

Chuyển sang cấu hình "Phát hành", mọi thứ đã hoạt động.

Tôi đã theo dõi nó để thiếu tệp kê khai cùng với DLL của tôi, mà tôi tiếp tục theo dõi để có tập hợp Danh tính hội. (Thuộc tính> Công cụ kê khai> Chung> Nhận dạng lắp ráp)

Tôi đã xóa cài đặt này và tệp kê khai được thả ở đúng vị trí và mọi thứ hoạt động.

3

Có cùng một vấn đề mặc dù một dự án VC9.0 khác hoạt động tốt. Vì vậy, tôi đã so sánh cả hai cài đặt dự án. Sự khác biệt quan trọng nằm trong 'Thuộc tính dự án' -> 'Thuộc tính cấu hình' -> 'Công cụ khai thác' -> 'Đầu vào và đầu ra' -> 'Tệp kê khai nhúng'. Tùy chọn này phải được đặt thành CÓ.

+0

điều này có thể không phải là trường hợp! nó yêu cầu tôi sử dụng tệp kê khai, không phải tệp kê khai được nhúng. Tôi đã thay đổi thành 'NO' và nó chỉ chạy tốt –

+0

Thay đổi chính xác này đã giải quyết được vấn đề cho tôi. Nó có thể khác nhau trong các trường hợp khác nhau. –

0

Tôi đã thử tất cả các giải pháp được đề xuất mà không có bất kỳ sự may mắn nào. Cuối cùng tôi đã phát hiện thấy tệp kê khai bị thiếu trong thư mục "C:\WINDOWS\WinSxS\Manifests".

Tìm thư mục trong C:\WINDOWS\WinSxS nơi dll của bạn nằm. Kiểm tra xem có tệp kê khai nào trong C:\WINDOWS\WinSxS\Manifests khớp với tên thư mục của dll của bạn hay không. Nếu tệp kê khai bị thiếu, hãy sao chép tệp kê khai chính xác từ máy khác và dán tệp đó vào thư mục tệp kê khai. Các tên file manifest là:

"x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456.cat"

"x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456.manifest"

1

Biên soạn lại dự án của bạn trong VC++ 2008 bằng cách sử dụng hàm File-> New-> Project Từ Mã Hiện tại. Nó đã giúp bản thân tôi, có lẽ nó sẽ giúp bạn. Trân trọng.

1

tôi đã giải quyết cùng một vấn đề như dưới đây:

  1. Chọn dự án, nhấp chuột phải và trang thuộc tính mở.
  2. Chọn Thuộc tính cấu hình.
  3. Chọn C/C++ từ danh sách cây.
  4. Chọn Tạo mã.
  5. Nhìn vào danh sách thuộc tính ở bên trái và xem tài sản Runtime Library.
  6. Chọn Gỡ lỗi nhiều luồng thay vì tắt DLL đa luồng.

Khi bạn làm điều đó, dự án của bạn nhúng dll phụ thuộc và do đó, nó thoát các vấn đề phụ thuộc.

Lưu ý: Tôi đã làm việc trên một dự án dll và gặp sự cố đó. Sau khi thực hiện các bước trên, nó làm việc cho tình huống của tôi.

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