2012-05-05 21 views
1

私はWDK XPSDrvサンプルプロジェクトを成功裏に進めて、必要なものを修正しました。しかし、私は絶対にどのようにビルドスクリプトを参照/ include/whatever shell32.libにするのか分かりません。私は.NETの男です!これは奇妙で恐ろしい領域です。Shell32.libへの依存関係をWDKメイクファイルに追加

私は依存関係の参照を追加すると私は何をする必要があると思います。私は、私は、Visual Studio、メモ帳での単純な改造++とシェルWDKのビルド環境を使用していないため、知識の私の極端な不足のために、私はこのエラー

3>errors in directory c:\winddk\7600.16385.1\src\printgit\xpsdrvsmpl\ 
src\filters\common 
3>c:\winddk\7600.16385.1\src\printgit\xpsdrvsmpl\src\filters\common\ 
xdstrmflt.cpp(238) : error C3861: 'ShellExecute': identifier not found 

を取得するコンパイル(と急い)とき。私はVSの代理プロジェクトを持っています。ここで私は小さなコードを書いてテストしています。そのプロジェクトでは、shell32.libに依存ライブラリを追加し、すべてが完全に機能しました。

sourcesを参照するメイクファイルがあります。その内容は以下のとおりです。それが重要なことを

ないが、Shell32はを必要とするコードが

HINSTANCE statu = ShellExecute(NULL,TEXT("open"),szTempFileName,NULL,NULL,9); 

ここsourcesファイルがありますされています。あなたのsourcesファイル内

例えば
INCLUDES=$(INCLUDES);  \ 
    .\;      \ 
    .\..\inc;    \ 
    .\..\debug;    \ 
    $(DDK_INC_PATH);   \ 
    $(SDK_INC_PATH)\gdiplus; \ 

USE_ATL=1 
USE_STL=1 

ATL_VER=70 
STL_VER=70 

# We use STL 7.0, which is not available pre-Vista. We therefore set USE_LIBCMT=1 
# If STL 7.0 is not necessary, USE_MSVCRT=1 is recommended 
USE_LIBCMT=1 

USE_IDLBASED_DLLDATA=1 
USE_OBJECT_ROOT=1 

MSC_WARNING_LEVEL=/W4 /WX 

USE_NATIVE_EH=1 

PRECOMPILED_CXX=1 
PRECOMPILED_INCLUDE=precomp.h 

# To remove debug code remove -DDBG from the line below 
C_DEFINES=$(C_DEFINES) -D_UNICODE -DUNICODE 

SOURCES=\ 
    bkpchndlr.cpp  \ 
    bkpthndlr.cpp  \ 
    bkschema.cpp  \ 
    cmpthndlr.cpp  \ 
    cmprofpthndlr.cpp \ 
    cmprofpchndlr.cpp \ 
    cmintpthndlr.cpp \ 
    cmschema.cpp  \ 
    cmprofileschema.cpp \ 
    cmintentsschema.cpp \ 
    globals.cpp   \ 
    nupschema.cpp  \ 
    nupchndlr.cpp  \ 
    nupthndlr.cpp  \ 
    pchndlr.cpp   \ 
    pgscpchndlr.cpp  \ 
    pgscpthndlr.cpp  \ 
    pgscschema.cpp  \ 
    porientpthndlr.cpp \ 
    porientschema.cpp \ 
    psizepthndlr.cpp \ 
    psizeschema.cpp  \ 
    pimagepthndlr.cpp \ 
    pimageschema.cpp \ 
    pshndlr.cpp   \ 
    pthndlr.cpp   \ 
    ptquerybld.cpp  \ 
    schema.cpp   \ 
    wmpchndlr.cpp  \ 
    wmpthndlr.cpp  \ 
    wmschema.cpp  \ 
    workbuff.cpp 

TARGETNAME=xdsmplcmn 
TARGETTYPE=LIBRARY 

答えて

1

TARGETLIBS=$(SDK_LIB_PATH)\kernel32.lib $(SDK_LIB_PATH)\user32.lib $(SDK_LIB_PATH)\shell32.lib 

...必要に応じて修正;)

しかし、あなたのエラーは、実際にないリンカエラーが、コンパイラエラーです、したがって、ShellExecuteと宣言されているヘッダ、つまりshellapi.hを何らかの形で含めることをお勧めします。


はちょうど私のWDK(7600.16385.1)にサンプルを見て、実際の問題として、あなたは非常に重要な部分は、あなただけにリンクする他の.libファイルを追加する必要がありますしており、以下に再現削除しました:私は本当にあなたが変更されたサンプルのかを知ることができず、構築しようとしている当然のようにsourcesファイルの多くは、このサンプルの一部として

TARGETLIBS=         \ 
    $(SDK_LIB_PATH)\kernel32.lib    \ 
    $(SDK_LIB_PATH)\user32.lib    \ 
    $(SDK_LIB_PATH)\winspool.lib    \ 
    $(SDK_LIB_PATH)\ole32.lib    \ 
    $(SDK_LIB_PATH)\oleaut32.lib    \ 
    $(SDK_LIB_PATH)\advapi32.lib    \ 
    $(SDK_LIB_PATH)\msxml6.lib    \ 
    $(SDK_LIB_PATH)\uuid.lib     \ 
    $(SDK_LIB_PATH)\Comdlg32.lib    \ 
    $(OBJ_PATH)\..\debug\$O\xdsdbg.lib \ 
    $(OBJ_PATH)\..\common\$O\xdsmplcmn.lib \ 

...謝罪がある:)

+0

あなたはされています聖人。私はちょうど例を見つけるためにkernel32.libのためにすべてをastrogreppingすることによってソースのことを考え出しました。おそらく私はそれがコンパイラのエラーだと気づく前に私の髪を引っ張っただろう。 – scaryman

+0

ビジュアルスタジオテストアプリに含まれているヘッダーは、正常に動作したテストプロジェクトのインクルードファイルではなかったため、どこかにshellapi.hをインクルードする必要があります。奇妙な。 – scaryman

+0

@scaryman: 'Windows.h'を含むときにすべての種類のものを含むプリコンパイルされたヘッダー' stdafx.h 'を通し、ある暗黙的な '#include'を防ぐために' #include ' #include'sが起きてから 'Windows.h'などに渡されます。もちろん、あなたが使っているMFC/ATL/WTLヘッダも 'shellapi.h 'を利用することができます。 – 0xC0000022L

関連する問題