2012-04-17 77 views
7

Tôi cố gắng xây dựng ứng dụng multiproject của mình trong Visuas C++ 10 ở chế độ phát hành.
Tôi gặp lỗi liên kết tiếp theo:
2> Tất cả các kết quả đầu ra đều được cập nhật. 2> PidAppLib.lib (ThreadWin32.obj): lỗi LNK2011: đối tượng biên dịch trước không được liên kết; Hình ảnh có thể không chạy
2> C: \ infinite_memories_svn \ \ sw \ NewPidTools \ PidWriter \ phát hành \ PidLabler.exe dự án: LNK1120 lỗi nghiêm trọng: 1 externals chưa được giải quyết
2>
2> Build FAILED.
Visual C++ - không thể nhìn thấy lỗi bên ngoài nào

Làm cách nào để biết đối tượng nào chưa được giải quyết?
ThreadWin32.obj là thư viện bên ngoài được tải xuống từ internet.

+0

Khi gỡ lỗi, nó hoạt động ... Tôi đoán vấn đề là với đối tượng biên dịch trước nhưng tôi không biết nó là gì –

+0

Bạn đã thử 'Xây dựng lại tất cả' chưa? (Xin lỗi - Tôi biết nó khá cơ bản, nhưng bạn không bao giờ biết) – MiMo

+0

Bạn có thể kiểm tra cài đặt thư viện của mình và đảm bảo chúng được đặt để phát hành đúng cách không? Tôi thấy mình thiết lập chúng cho Debug để có được mã làm việc, và sau đó quên để thay đổi phát hành quá. –

Trả lời

6

Ok.
Tôi đã giải quyết được sự cố.
Tôi có 2 thư viện, giả sử a.lib và b.lib, và dự án, c. a.lib sử dụng b.lib như vậy trong các phụ thuộc thư viện của a.lib Tôi đã thêm b.lib, c sử dụng a.lib vì vậy tôi đã thêm vào phụ thuộc.
Nó hoạt động trong gỡ lỗi nhưng trong bản phát hành, tôi cũng nên thêm b.lib vào phụ thuộc của c. Lạ nhưng nó đã giải quyết được sự cố

+0

Liên kết này cung cấp giải thích tốt hơn về vấn đề [Lập trình bit] (http://progbits.blogspot.in/) – MLS

3

Tôi đã gặp lỗi này trong một dự án lớn mà tôi đã tái cấu trúc. Trong quá trình tái cấu trúc, tôi thỉnh thoảng sẽ biên dịch các tệp nguồn riêng lẻ để kiểm tra các thay đổi mà tôi đã thực hiện mà không cần phải xây dựng toàn bộ dự án. Tùy thuộc vào cấu hình dự án của bạn, điều này có thể dẫn đến tệp .obj đang được xuất trong một thư mục khác với nơi chúng thường xuất ra khi bạn xây dựng dự án. Trong trường hợp của tôi, các tệp .obj cho các tệp nguồn được biên dịch thủ công được xuất trong thư mục mã nguồn thay vì thư mục xây dựng trung gian. Một tác dụng phụ của điều này có vẻ là khi xây dựng toàn bộ dự án, các tệp nguồn đã được biên dịch thủ công có thể không được biên dịch lại ngay cả khi các thay đổi khác ở nơi khác có nghĩa là chúng (như thay đổi cần biên dịch lại tiêu đề đã biên dịch trước). tập tin).

Giải pháp cho tôi là xóa thủ công tất cả các tệp .obj được tạo bằng cách biên dịch thủ công tệp nguồn riêng lẻ. Tùy thuộc vào việc thực hiện cấu hình dự án Làm sạch trên dự án cũng có thể hoạt động.

+0

Thật vậy, làm sạch/xây dựng lại tất cả các vấn đề cố định này cho tôi. – aquirdturtle

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