2009-11-26 34 views
6

Tôi đã tải về mã nguồn cho Launchy và đang cố gắng xây dựng nó trong Visual Studio 2005. Dự án Launchy được xây dựng bằng VC7 vì vậy tôi phải cập nhật các tệp dự án lên VC8 và quá trình đó dường như hoạt động tốt . Tuy nhiên, Launchy cũng sử dụng các libs Boost 1.33.1 và những gì tôi đã xây dựng là thư viện Boost 1.41.0 (đạo cụ để Tăng để tạo libs gần đây dễ dàng hơn nhiều để xây dựng), vì vậy tôi cũng cập nhật dự án để trỏ đến Tăng cài đặt libs. Bây giờ tôi nhận được lỗi mối liên kết sau đây:Tăng cường linker lỗi Visual C++

fatal error LNK1104: cannot open file 'libboost_regex-vc80-mt-sgd-1_41.lib' 

tôi đã có một cái nhìn trong thư mục Boost lib và trận đấu gần nhất mà tôi có thể tìm thấy là ...

libboost_regex-vc80-mt-gd-1_41.lib 

Thông báo các thiếu 's'. Tôi không hiểu sự khác biệt trong libs là gì, và liệu Visual Studio có đang tìm kiếm điều sai hay quá trình Boost build của tôi không thành công để xây dựng các lib thích hợp. Ai đó có thể chỉ cho tôi phương hướng đúng không?

Là một thử nghiệm, tôi đã tạo một bản sao của lib regex mà tôi có và đổi tên nó thành những gì mà trình liên kết đang tìm kiếm. Điều đó mang lại cho tôi một danh sách dài các mối liên kết lỗi về những biểu tượng đã được quy định tại msvcrtd.lib, chẳng hạn như sau:

error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" ([email protected]@[email protected]@@Z) already defined in libcmtd.lib(typinfo.obj) 

Tôi sẽ cố gắng để xây dựng Boost 1.33.1 libs và chỉ tập tin dự án Launchy của tôi ở đó thay thế. Nhưng tôi vẫn muốn biết những gì là sai với Boost 1,41.0 libs của tôi.

Sửa: Tôi tìm thấy một tài liệu tham khảo in the Boost docs những gì libs 's' là:

Use this library when linking statically to the C++ standard library and compiler runtime support libraries.

Vì vậy, nó trông giống như libs 's' là những cái đúng. Bây giờ tôi chỉ cần tìm ra cách để xây dựng chúng.

Giải pháp: Tôi có thể xây dựng các thư viện tăng thiếu bị thiếu bằng dòng lệnh sau.

bjam --build-type=complete msvc stage 

Tôi đã chạy điều đó sau khi đã chạy boostrap.bat trong thư mục nơi tăng cường cuộc sống.

+0

Nếu bạn không muốn gây rối với việc xây dựng chúng, bạn có thể tải chúng tại đây: http://boost.teeks99.com – teeks99

Trả lời

10

Sự khác biệt là clearly described in Boost docs - "mt-sgd" có nghĩa là "gỡ lỗi, thư viện thời gian chạy được liên kết tĩnh, đa luồng, với biểu tượng gỡ lỗi". "mt-gd" là giống nhau, nhưng sử dụng thư viện thời gian chạy được liên kết động (ví dụ: msvcrtd.lib thay vì libcmtd.lib).

Hoặc thay đổi cài đặt dự án để sử dụng liên kết CRT động (tức là/MDd thay vì/MTd) hoặc tạo Boost bằng cách sử dụng liên kết tĩnh - trộn những cài đặt đó sẽ không hoạt động đúng cách.

3

Bạn đã sử dụng lệnh nào để tạo tăng? thử chỉ định build-type = complete. Thông thường nó cũng nên xây dựng các libs.

+0

Tôi sẽ cố gắng, cảm ơn. Tôi nghĩ rằng tôi đã xây dựng nó mà không chỉ định kiểu build. – Parappa

+0

Nó đang hoạt động! Cảm ơn một lần nữa. – Parappa

+0

Nó không hiệu quả với tôi. các thư viện không được xây dựng. boost 1.54 – Max

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