2012-03-04 21 views
8

Tôi đang thực hiện một dự án sử dụng Visual C++ 2010 trong môi trường Windows 7. tôi cần phải sử dụng thư viện ATL, trên thực tế tôi cài đặt Windows WDK (phiên bản 7600.16385.1) Đặc biệt tôi bằng cách sử dụng sau đây thư viện từ WDKATL thư viện: LNK4254 cảnh báo và LNK4078

  • setupapi.lib
  • atls.lib
  • atlsd.lib
  • atl.lib
  • atlthunk.lib
  • 012.351.

Biên dịch mã của tôi, tôi có những lời cảnh báo sau đây:

atls.lib (stdafx.obj): cảnh báo LNK4254: phần 'ATL' (50.000.040) sáp nhập vào '.rdata' (40.000.040) với các thuộc tính khác nhau

atls.lib (stdafx.obj): cảnh báo LNK4078: nhiều 'ATL' phần tìm thấy với các thuộc tính khác nhau (40301040)

có ai biết làm thế nào để sửa chữa nó? Tôi lo lắng về rò rỉ bộ nhớ có thể có hoặc có một số vấn đề để truy cập dữ liệu của tôi. Cảm ơn

+1

Bạn đang sử dụng phiên bản Express của Visual Studio? Bất kỳ lý do cụ thể để liên kết tất cả các libs đã đề cập? 'atls' và' atlsd' được phát hành và gỡ lỗi verions của cùng một thư viện, bạn rất khó có thể cần cả hai. –

+0

@RomanR. Bạn nên đăng câu trả lời đó vì sử dụng cả atls.lib và atlsd.lib gần như chắc chắn là nguyên nhân gây ra lỗi. –

Trả lời

9

Tôi có cùng cảnh báo với Visual Studio 2010 Express Edition và ATL được lấy từ WDK 7.1. Dường như các thư viện atl được xây dựng với các tùy chọn khác với dự án của bạn lấy từ atlbase.h. Tôi đã thay đổi cài đặt trong atlbase.h

#pragma section("ATL$__a", read, shared) => #pragma section("ATL$__a", read) 
#pragma section("ATL$__z", read, shared) => #pragma section("ATL$__z", read) 
#pragma section("ATL$__m", read, shared) => #pragma section("ATL$__m", read) 

và các cảnh báo đã biến mất.

+2

đã làm việc cho tôi. +1 –

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