2010-08-20 3 views
10

Tôi đang cố tạo một bản dựng x64 của dự án với Visual Studio 2005. Hiện tại không có lỗi liên kết C1905, 'Giao diện người dùng và đầu cuối không tương thích (phải nhắm mục tiêu cùng một bộ xử lý). 'Visual Studio - Tìm mô-đun nào đang gây ra C1905 (không tương thích với bộ xử lý)

Từ những gì tôi thu thập, điều này chủ yếu nói rằng bản dựng x64 của tôi đang cố liên kết với các mô-đun x86. Thật không may, dự án này liên kết với rất nhiều của các thư viện khác nhau. Tôi không chắc đó là nguyên nhân gây ra vấn đề.

Có cách nào để có thêm thông tin ngoài Visual Studio không?

Trả lời

10

Trước tiên, hãy kiểm tra Trình quản lý cấu hình (Trình tạo> Trình quản lý cấu hình ...) để đảm bảo rằng bạn đang xây dựng tất cả các dự án của mình cho cùng một nền tảng.

Nếu điều đó không giúp đỡ, sau đó từ Visual Studio Command Prompt (có sẵn từ menu Start), bạn có thể sử dụng dumpbin để xác định kiến ​​trúc của lib của bạn và obj file bằng cách làm như sau:

C:\Foo> dumpbin /headers Foo.lib | more 
Microsoft (R) COFF/PE Dumper Version 10.00.30319.01 
Copyright (C) Microsoft Corporation. All rights reserved. 


Dump of file Foo.lib 

File Type: LIBRARY 

FILE HEADER VALUES 
      14C machine (x86) 
       3 number of sections 
     4C6CB9B6 time date stamp Wed Aug 18 21:57:26 2010 
      113 file pointer to symbol table 
       8 number of symbols 
       0 size of optional header 
      100 characteristics 
        32 bit word machine 

Dòng đầu tiên bên dưới giá trị tiêu đề cho bạn biết kiến ​​trúc nào .lib/.obj được biên dịch cho (trong trường hợp này là x86).

Nếu bạn có rất nhiều các chất trung gian liên kết, bạn có thể tự động hoá này một chút bởi chỉ cần nhìn cho x86 (hoặc x64) file:

for /R %f in (*.obj *.lib) do @echo %f && dumpbin /headers %f | findstr /c:"machine (x86)"

5

Một lý do khác là cờ biên dịch. Nếu một số không được đặt cho toàn bộ chương trình tối ưu hóa và những người khác thì không, sau đó bạn cũng sẽ nhận được lỗi này. Có hai cài đặt như vậy trong VS - một ở cấp độ Chung và một ở C++/Tối ưu hóa. Các thư viện được tạo ra bởi các phiên bản cũ của VS không có bộ này. Những người được sản xuất bởi các phiên bản mới hơn của VS có nó được thiết lập.

Cách duy nhất để tìm ra thư viện vi phạm là gỡ từng thư một cho đến khi lỗi biến mất.