2012-03-04 22 views
8

私はWindows 7でVisual C++ 2010を使用してプロジェクトを作成しています。 実際にはWindows WDK(バージョン7600.16385.1)をインストールしました 特に私は以下を使用しています ATLライブラリ:警告LNK4254とLNK4078

  • atlsd.lib
  • atls.lib WDK

    • setupapi.lib
    • からライブラリ
    • atl.lib
    • atlthunk.lib

      atls.lib(stdafx.obj):警告LNK4254:私は次の警告を持っている私のコードをコンパイルする

    セクション 'ATL'(50000040)は、異なる属性を持つ '.rdata'(40000040)にマージ

    atls.lib(stdafx.obj):警告LNK4078:異なる属性と見られる複数の 'ATL' セクション(40301040)

    、誰もがそれを修正する方法を知っていますか?メモリリークの可能性があるか、データにアクセスする際に問題が発生する可能性があります。 ありがとう

  • +1

    Express版のVisual Studioを使用していますか?すべての上記のlibsをリンクする特定の理由は何ですか? 'atls'と' atlsd'は同じライブラリのリリースとデバッグのバージョンですが、両方を必要とすることはほとんどありません。 @ RomanR。 –

    +0

    atls.libとatlsd.libの両方を使用することは、ほぼ確実にエラーの原因であるため、答えとして投稿するべきです。私のために働いたのは –

    答えて

    9

    Visual Studio 2010 Express EditionとWDK 7.1から取得したATLと同じ警告がありました。 atlのlibsはあなたのプロジェクトがatlbase.hから取るものとは異なるオプションで構築されたようです。私は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) 
    

    警告が消えました。

    +2

    。 +1 –