Vì lợi ích của người khác, tôi mặc dù tôi muốn bao gồm những gì tôi đã làm.
Vì bạn không thể khiến Visual Studio (trong trường hợp của tôi là 2010) bỏ qua các cảnh báo LNK4204, cách tiếp cận của tôi là cung cấp cho nó những gì nó muốn: các tệp pdb. Vì tôi đang sử dụng thư viện mã nguồn mở trong trường hợp của mình, tôi đã có mã xây dựng tệp pdb.
NHƯNG, mặc định là đặt tên tất cả các tệp PDF giống nhau: vc100.pdb trong trường hợp của tôi. Vì bạn cần .pdb cho mỗi và mọi .lib, điều này tạo ra một vấn đề, đặc biệt nếu bạn đang sử dụng thứ gì đó như ImageMagik, tạo ra khoảng 20 tệp .lib tĩnh. Bạn không thể có 20 tệp lib trong một thư mục (mà trình liên kết của ứng dụng của bạn tham chiếu đến liên kết trong các thư viện từ đó) và có tất cả 20 tệp .pdb được gọi giống nhau.
Giải pháp của tôi là xây dựng lại các tệp thư viện tĩnh của mình và định cấu hình VS2010 để đặt tên tệp .pdb liên quan đến DỰ ÁN. Bằng cách này, mỗi .lib nhận được một .pdb có tên tương tự và bạn có thể đặt tất cả LIB và PDB vào một thư mục để dự án của bạn sử dụng.
Vì vậy, đối với cấu hình "Gỡ lỗi", tôi đã chỉnh sửa:
Thuộc tính-> Thuộc tính cấu hình -> C / C ++ -> Tệp đầu ra -> Tên tệp cơ sở dữ liệu chương trình từ
$ (IntDir) vc $ (PlatformToolsetVersion) .pdb
là giá trị sau:
$ (OutDir) vc $ (PlatformToolsetVersion) D $ (ProjectName) .pdb
Bây giờ thay vì ở đâu đó trong thư mục trung gian, các tệp .pdb được ghi vào thư mục đầu ra, nơi các tệp .lib cũng đang được viết, VÀ quan trọng nhất, chúng được đặt tên với hậu tố là D + tên dự án . Điều này có nghĩa là mỗi dự án thư viện tạo ra một dự án .lib và một dự án cụ thể .pdb.
Giờ đây, tôi có thể sao chép tất cả các tệp .lib phát hành của mình, tệp .lib gỡ lỗi của tôi và tệp .pdb gỡ lỗi vào một nơi trên hệ thống phát triển của tôi và dự án sử dụng thư viện bên thứ 3 đó ở chế độ gỡ lỗi, có pdb tệp nó cần trong chế độ gỡ lỗi.