2012-01-24 12 views
5

Tôi đang làm việc trên một cửa sổ hệ điều hành 64 bit 7 máy cuối cùng VS2008 với bộ 64 bit.Lỗi cấu hình song song cho bản dựng gỡ lỗi 64 bit trong VS2008

Tôi đã tạo thành công các dự án của mình ở cả 32 & 64 bit, gỡ lỗi và cấu hình phát hành. Gỡ lỗi 64 bit không khởi chạy; nó đưa ra lỗi:

Unable to Start program xxx This application has failed to start because application configuration is incorrect. Review the manifest file for possible errors. Reinstalling the application may fix this problem. For more retails see application event log.

Tôi chạy bộ tập phụ thuộc. Từ con đường redistibutable C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ redist \ Debug_NonRedist \ amd64 \ Microsoft.VC90.DebugCRT tôi thêm Microsoft.VC90.DebugCRT.manifest msvcm90d msvcp90d msvcr90d Microsoft.VC90.DebugOpenMP vcomp90d.sll trong thư mục bin \ debug của giải pháp của tôi.

Cuối cùng Dependency Walker didnt có bất kỳ dấu vàng (thiếu file) trái, nhưng vẫn nó đã lỗi như:

Error: At least one required implicit or forwarded dependency was not found. Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module. Error: Modules with different CPU types were found. Error: The Side-by-Side configuration information in "e:\xyz.EXE" contains errors. The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail (14001).

32 chút biểu hiện nói:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" **processorArchitecture="x86"** publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 
</assembly> 

Trong khi debug 64 bit manifest có:

<dependency> 
    <dependentAssembly> 
     <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 

Điều tôi không hiểu là, tại sao trình gỡ lỗi 32 bit lại hỏng n thành công?

Hãy giúp tôi vì tôi đã kiểm tra nhiều câu hỏi nhưng chưa tìm thấy giải pháp khả thi nào.

+0

Không phải là bản sao, nhưng có thể có liên quan? Bạn không chắc chắn nếu điều này sẽ giúp chút nào: http://stackoverflow.com/questions/3803825/vc-crt-redist-problem –

+0

Bạn đang cố gắng chạy bản dựng trên một máy khác với máy bạn đã xây dựng chưa? Thông thường, thời gian chạy gỡ lỗi là "không phân phối lại" có nghĩa là bạn không thể chạy nó trên các máy khác mà không xây dựng mô-đun hợp nhất và cài đặt chúng trên bất kỳ máy nào bạn đang cố chạy mã. – Benj

+0

@Nic - Tôi không nghĩ rằng câu hỏi đó sẽ hữu ích, người đó chỉ thiếu thời gian phát hành chính xác. Thời gian chạy gỡ lỗi là một nỗi đau ... Thường xây dựng một "dự án thiết lập" trong VS xử lý các mô-đun hợp nhất cho bạn để bạn có thể cài đặt chúng cùng với các tệp nhị phân của bạn bằng một bản dựng gỡ lỗi. – Benj

Trả lời

5

Cảm ơn bạn đã trả lời câu hỏi của tôi. Cuối cùng tôi đã giải quyết nó và đây là giải pháp: -

Mỏ là một giải pháp VC + dựa trên Qt, ứng dụng phụ thuộc vào một số dlls bên thứ 3 & libs. Nhiệm vụ của tôi là cung cấp hỗ trợ 64bit cho ứng dụng của tôi mà tôi đã xây dựng Qt và bên thứ ba dlls & libs trong hệ điều hành 64 bit.

Tôi gặp lỗi CRT khi tôi thử chạy ứng dụng của mình trong gỡ lỗi cấu hình 64 bit.vẫn kiên trì các lỗi ngay cả sau khi tôi đã sao chép CRT sau vào thư mục bin của ứng dụng của tôi

redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT:

  1. Microsoft.VC90.DebugCRT.manifest
  2. msvcm90d.dll
  3. msvcp90d.dll
  4. msvcr90d.dll

.210:

  1. vcomp90d.dll

tôi đã có thể khởi động ứng dụng của tôi thành công trong chế độ gỡ lỗi 64 bit khi tôi dán CRT trên trong thư mục bin tương ứng nơi Qt và thư viện của bên thứ 3 đã có mặt.

+0

Gợi ý: bạn sẽ có thể chấp nhận câu trả lời của riêng bạn. –

1

Phụ thuộc không phải là tuyệt vời với phụ thuộc song song vì nó thường có thể làm cho nó trông giống như dll được tìm thấy khi thực sự là một phiên bản hơi khác nhau đã được yêu cầu.

Bạn có thể sử dụng Sxstrace.exe để có được một ý tưởng tốt hơn về những gì đang mất tích:

http://blogs.msdn.com/b/junfeng/archive/2006/04/14/576314.aspx

Nhật ký sự kiện thường thấy side-by-side lỗi nhưng thật đáng buồn này không cung cấp cho bạn nhiều thông tin khác hơn là bạn có vấn đề.

2

Tôi đã gặp vấn đề tương tự sau khi thêm tệp kê khai cho "Độ cao đặc quyền" vào ứng dụng bảng điều khiển Delphi của tôi (32 bit, phát hành khi nó chạy trên Win7 x64). Vấn đề này có liên quan đến một sự phụ thuộc được đề cập trong file manifest:

<dependency> 
<dependentAssembly> 
    <assemblyIdentity 
    type="win32" 
    name="Microsoft.Windows.Common-Controls" 
    version="6.0.0.0" 
    publicKeyToken="6595b64144ccf1df" 
    language="*" 
    processorArchitecture="*"/> 
</dependentAssembly> 
</dependency> 

Khi tôi loại bỏ nó từ tệp kê khai, Side by Side lỗi biến mất.

+0

Chào mừng và cảm ơn câu trả lời thay thế, MrTheV. –

+0

Bạn đã xóa nó khỏi tệp kê khai bằng cách nào? – user3731622