2009-10-12 22 views
14

Sử dụng visual studio 2008 SP1,
dòng này:C++: LINK: gỡ lỗi XXXXX.exe không tìm thấy hoặc không được xây dựng bởi liên kết gia tăng cuối cùng; thực hiện đầy đủ liên kết

LINK : debug\XXXXX.exe not found or not built by the last incremental link; performing full link 

xuất hiện mỗi lần duy nhất tôi lập dự án, không có vấn đề nhỏ như thế nào một sự thay đổi tôi thực hiện.
Điều gì có thể là lý do cho điều đó?

Trả lời

5

Vì vậy, chỉ ra rằng sự cố tự khắc phục sự cố nếu tôi thêm /INCREMENTAL vào dòng lệnh trình liên kết. Điều này mặc dù thực tế rằng hành vi mặc định theo tài liệu là để cho phép liên kết gia tăng.

Lạ.

+0

Điều này đã làm cho tôi. Trợ giúp lớn! –

4

Thực sự chụp trong bóng tối nhưng, ...

Bạn có chuyển XXXXX.exe từ nơi nó được xây dựng sang nơi khác không? Toàn bộ điểm của một liên kết gia tăng là thay đổi một exe hiện có. Nếu chẳng có ai, nó sẽ rất khó khăn ...

Một lý do khác có thể là tập tin đã thay đổi sau khi xây dựng (có thể là do công cụ khác) ...

Tất cả những lý do được liệt kê trong the help item for /INCREMENTAL:

Bên cạnh đó, lINK thực hiện một liên kết đầy đủ nếu có của tình huống sau xảy ra:

tình trạng (.ilk) tập tin gia tăng là mất tích. (LINK tạo một tệp .ilk mới để chuẩn bị cho liên kết gia tăng tiếp theo.)

Không có sự cho phép viết đối với . (LINK bỏ qua tệp .ilk và liên kết không liên tục.)

Tệp đầu ra .exe hoặc .dll thiếu .

Dấu thời gian của .ilk, .exe hoặc .dll được thay đổi.

Tùy chọn LINK được thay đổi. Hầu hết các tùy chọn LINK , khi thay đổi giữa các bản dựng, sẽ tạo ra một liên kết đầy đủ.

Tệp đối tượng (.obj) được thêm hoặc bỏ qua.

Một đối tượng được biên dịch với tùy chọn /Yu/Z7 được thay đổi.

+0

Không .. không có gì chạm vào exe sau khi liên kết. – shoosh

+0

Làm thế nào về những thứ như máy quét vi-rút, chỉ mục tìm kiếm, phần mềm sao lưu? Có gì đó đang chạm vào tất cả các tệp mới trên hệ thống của bạn không? –

1

(Cũng trong bóng tối) Một lý do có thể là bạn sử dụng tiêu đề toàn dự án tham chiếu macro __DATE__. Nhưng trong trường hợp đó, bạn cũng sẽ thấy một biên dịch lại đầy đủ (phải không?)

+0

không bao giờ có biên dịch lại đầy đủ và tôi không tham chiếu __DATE__ ở bất cứ đâu – shoosh

3
  1. Tải xuống procmon từ Microsoft.
  2. Chạy ứng dụng, thiết lập bộ lọc để bạn đang tìm kiếm quyền truy cập vào đường dẫn chứa tên .exe của bạn.
  3. Thực hiện liên kết.
  4. Xem sự cố xảy ra - bạn có gặp sự cố không, nó có đăng nhập lỗi khi mở nó không. Procmon sẽ ghi lại mọi tệp mở, đọc, đóng, v.v. Nếu nó bị lỗi, nó sẽ ghi lại nó.
  5. Ngoài ra hãy chắc chắn rằng nó có thể tìm thấy tập tin .ilk - Tôi nghĩ rằng nó cần điều đó là tốt.
+0

Đây là nhật ký: http://www.shiny.co.il/shooshx/k/Kawaiiexe.PML Tôi không thể thấy bất kỳ điều gì vô cùng sai. bạn có thể? – shoosh

+0

Đăng một tập tin văn bản sẽ giúp những người không cài đặt procmon. –

+0

CVS là điều tốt nhất có thể làm: http://www.shiny.co.il/shooshx/k/Kawaiiexe.CSV – shoosh

13

Câu hỏi cũ, nhưng chỉ trong trường hợp đối với ai đó thì đó vẫn là vấn đề (và đó là ..).

Liên kết gia tăng không tương thích với việc tạo tệp kê khai (Proj opts> Linker> Tệp kê khai> Tạo tệp kê khai: Có). Thật vậy, tạo ra manifest sửa đổi exe/dll để linker phải làm liên kết đầy đủ.

Có một số cách giải quyết, để biết thêm chi tiết: http://chadaustin.me/2009/05/incremental-linking-and-embedded-manifests/

tạm thời (và đơn giản nhất/nhanh nhất) giải pháp là tắt tính năng tạo manifest quá trình phát triển và cho phép nó một lần nữa trong giai đoạn phát hành. Mặc dù điều này vô hiệu hóa gui XP/Vista theo phong cách cho các ứng dụng (điều khiển trông giống như trong "chế độ cổ điển").

0

Trong trường hợp của tôi, tôi gặp lỗi này ngày hôm qua.

VS đặt code generation > runtime Library thành Multi-threaded Debug DLL (/MDd) thay vì Multi-threaded Debug (/MTd).

Nếu tôi tạo lại dự án mới, cài đặt xấu này sẽ xảy ra lần nữa. Tôi tự chuyển sang /Mtd, sau đó không xảy ra lỗi.

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