Khi liên kết dll của tôi trong phiên bản build tôi nhận được -VC++/DEFAULTLIB vấn đề
1> LINK: cảnh báo LNK4098: defaultlib 'mfc80d.lib' mâu thuẫn với việc sử dụng libs khác; sử dụng/NODEFAULTLIB: thư viện
1> LINK: warning LNK4098: defaultlib 'mfcs80d.lib' xung đột với việc sử dụng các libs khác; sử dụng/NODEFAULTLIB: thư viện
1> LINK: warning LNK4098: defaultlib 'msvcrtd.lib' xung đột với việc sử dụng các libs khác; sử dụng/NODEFAULTLIB: thư viện
thêm/VERBOSE, tôi thấy như sau (đoạn): ...
1> Tìm kiếm D: \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ mfc80d.lib:
1> Found "công cộng: __thiscall ảo AFX_MODULE_STATE :: ~ AFX_MODULE_STATE (void)" (?? 1AFX_MODULE_STATE @@ UAE @ XZ) 1>
tham chiếu trong mfcs80.lib (dllmodul .obj) 1> Loaded mfc80d.lib (MFC80D.DLL)1> Found "stdcall dài AfxWndProc (struct HWND__ *, unsigned int, unsigned int, long)" (? AfxWndProc @@ YGJPAUHWND __ @@ IIJ @ Z)
1> tham chiếu trong mfcs80.lib (dllmodul.obj) 1> Loaded mfc80d.lib (MFC80D.DLL)
...
Nếu tôi diễn giải chính xác điều này, điều đó có nghĩa là trình liên kết bằng cách nào đó sẽ giải quyết các cuộc gọi từ thư viện (tối ưu hóa) mfcs80, như các cuộc gọi vào thư viện (không được tối ưu hóa) mfc80D. Làm sao có thể??
Khi tôi thêm /NODEFAULTLIB:mfc80d.lib các cảnh báo đã biến mất, nhưng tôi chưa yên lặng với nó. Là một sang một bên, các mô-đun thực sự bị tai nạn không thể giải thích rời rạc trên các liên kết gia tăng, được giải quyết chỉ bằng một tái xây dựng. Tôi đang sử dụng VS2005.
[Chỉnh sửa:] Đã thay đổi tiêu đề để bao gồm DEFAULTLIB, hy vọng tập trung vào chủ thể tốt hơn. Tôi làm thấy một dòng rõ ràng nói
xử lý /DEFAULTLIB:mfc80d.lib
trong thư mục/đầu ra VERBOSE, trong số nhiều libs khác (không debug) mặc định. Nó đến từ đâu? Làm thế nào tôi có thể sửa lỗi này?
Cảm ơn!
Cảm ơn - nhưng tôi đã kiểm tra tất cả các dự án (và tất cả các file cá nhân), và tất cả họ đang biên soạn với/MD. Tôi có rất ít phụ thuộc bên ngoài: version.dll, shlwapi.dll và thành phần bên thứ 3 mà tôi đã kiểm tra với phụ thuộc-walker và dường như liên kết với các phiên bản CRT thích hợp (không gỡ lỗi). Trình chuyển đổi/MD có thực sự là quyền truy cập duy nhất vào khóa chuyển đổi/DEFAULTLIB không? Không có đầu vào nào khác có thể làm hỏng nó? –