2010-10-16 28 views
34

Tôi thừa hưởng một số lượng đáng kể mã, bao gồm dự án studio trực quan được cho là (tốt nhất có thể tôi biết) xây dựng tệp .lib. Visual studio nói "... Tạo mã ... Tạo thư viện ... Tạo tệp thông tin duyệt ..." và cuối cùng, nó cho biết quá trình xây dựng đã thành công. Trong thư mục release/debug, nó có một bó các tệp .obj, nhưng nó không có tệp .lib. Tôi có thể bỏ lỡ điều gì?Xây dựng Thành công, nhưng không có tệp .lib được tạo

Cảm ơn!

Trả lời

47

Mở thuộc tính dự án (nhấp chuột phải vào dự án trong Solution Explorer, chọn 'Thuộc tính'). Dưới 'Librarian', kiểm tra 'Output File' - đó là nơi đầu ra nên đi.

Nếu điều này có vẻ đúng, hãy thử dir /s *.lib trong thư mục con phù hợp cho dự án của bạn, để xem bạn có thể tìm thư viện đầu ra theo ngày và giờ không. Nếu bạn vẫn không thể tìm thấy nó, hãy thử xây dựng lại sạch (dự án nhấp chuột phải, chọn 'Xây dựng lại').

Đối với tệp DLL, tệp .Lib không được tạo nếu DLL không xuất được gì để sử dụng bên ngoài. Tôi không nghĩ rằng điều này áp dụng cho xây dựng lib tĩnh nhưng tôi sẽ chắc chắn rằng bạn đang xuất một cái gì đó công khai từ mã nguồn dự án thư viện của bạn.

+1

khiếp sợ. Tôi không biết tôi sẽ làm gì nếu không có các bạn! Vâng, vấn đề là ở Librarian, nhà phát triển trước đã mã hóa cứng đường dẫn đến thư mục chính của anh ấy. Những kẻ ngu ngốc. – Jim

+16

"Đối với các tệp DLL, tệp .Lib không được tạo nếu DLL không xuất được gì để sử dụng bên ngoài". - Đó là vấn đề của tôi. Tôi bị mất .lib bằng cách cấu hình lại một tệp tiêu đề và mất macro '__declspec (dllexport)'. – ken

+0

Tại sao bạn phải khai báo dllexport khi nó là một lib tĩnh? –

11

Thư viện tĩnh của tôi không chứa gì ngoài hai lớp mẫu, vì vậy tôi không có tệp .cpp. Điều này khiến Visual Studio 2015 không xuất ra tệp .lib. Để giải quyết vấn đề này, tôi đã tạo một tệp tin huh.cpp bao gồm tất cả các tiêu đề.

+1

Tôi đã phải thêm tệp hiện có vào bộ lọc 'Tệp tiêu đề' và 'Tệp nguồn' trước khi VS2015 muốn tạo tệp .lib. – oddRaven

1

Tôi cũng đã gặp phải vấn đề này.

Đó là do sử dụng macro không hợp lệ trong định nghĩa thư mục đầu ra. Trong trường hợp của tôi, đó là enter image description here

khi nó cần phải có được

enter image description here

tôi phải trống ra đường dẫn đầy đủ trong ảnh chụp màn hình thứ hai. Tôi đã có macro không chính xác. Tôi đã sử dụng MsBuildProjectDir khi tôi nên sử dụng MsBuildProjectDirectory. Hộp văn bản chỉ đọc sẽ hiển thị đường dẫn đầy đủ (ví dụ: C:\Development\blah\blah\blah\) khi thư mục đầu ra hợp lệ. Nếu thư mục đầu ra không hợp lệ, bạn sẽ nhận được một cái gì đó giống như ảnh chụp màn hình đầu tiên.

5

.lib sẽ không được tạo nếu bạn không thêm tiền tố __declspec (dllexport) cho các phương thức.

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