2016-08-03 37 views
0

pgpfoneをコンパイルしようとしていますが、私はVS6からVS2008に移行してVS2015に移行したビルドシステムに問題があります。ここでMFCヘッダーの構文エラー

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /I.\ /I..\common /I..\bignum /I..\..\..\libs\pfl\win32 /I..\..\..\libs\pfl\common /I..\..\..\libs\pfl\common\util /ZI /nologo /W2 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _WINDOWS /D PGP_WIN32=1 /D PGPXFER=1 /D PGP_INTEL=1 /D BNINCLUDE=bni80386c.h /D _VC80_UPGRADE=0x0600 /Gm /EHsc /MTd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo".\Debug/" /Fd".\Debug/vc140.pdb" /Gd /TP /analyze- /errorReport:queue ..\common\ADPCM.cpp ..\common\blowfish.cpp ..\common\bytefifo.cpp ..\common\cast5.cpp ..\common\CControlThread.cpp ..\common\CCounterEncryptor.cpp ..\common\CEncryptionStream.cpp ..\common\CMessageQueue.cpp ..\common\CPFPackets.cpp ..\common\CPFTransport.cpp ..\common\CPipe.cpp ..\common\CPriorityQueue.cpp ..\common\crc.cpp ..\common\CSoundInput.cpp ..\common\CSoundOutput.cpp ..\common\CXferThread.cpp ..\common\des3.cpp ..\common\dh.cpp ..\common\DHPrimes.cpp ..\common\fastpool.cpp ..\common\HashWordList.cpp ..\common\PGPFoneUtils.cpp ..\common\samplerate.cpp ..\common\SHA.cpp CAuthWindow.cpp CEncryptionDialog.cpp CFileTransferDialog.cpp CLevelMeter.cpp CModemDialog.cpp CPFTInternet.cpp CPFTSerial.cpp CPFWindow.cpp CPGPFone.cpp CPGPFoneFrame.cpp CPGPFStatusBar.cpp CPhoneDialog.cpp CSoundLight.cpp CStatusPane.cpp CTriThreshold.cpp CWinFilePipe.cpp CXferWindow.cpp LMutexSemaphore.cpp LSemaphore.cpp LThread.cpp PGPFWinUtils.cpp 
    PGPFWinUtils.cpp 
    _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) 
atlmfc\include\afxrendertarget.h(142): warning C4003: not enough actual parameters for macro 'IsNull' [C:\projects\pgpfone\src\win32\PGPfone.vcxproj] 
atlmfc\include\afxrendertarget.h(142): error C2059: syntax error: '(' [C:\projects\pgpfone\src\win32\PGPfone.vcxproj] 
atlmfc\include\afxrendertarget.h(142): error C2143: syntax error: missing ')' before '==' [C:\projects\pgpfone\src\win32\PGPfone.vcxproj] 
atlmfc\include\afxrendertarget.h(142): error C2143: syntax error: missing ',' before '==' [C:\projects\pgpfone\src\win32\PGPfone.vcxproj] 
atlmfc\include\afxrendertarget.h(142): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [C:\projects\pgpfone\src\win32\PGPfone.vcxproj] 
atlmfc\include\afxrendertarget.h(142): error C2059: syntax error: '==' [C:\projects\pgpfone\src\win32\PGPfone.vcxproj] 
atlmfc\include\afxrendertarget.h(142): error C2059: syntax error: ')' [C:\projects\pgpfone\src\win32\PGPfone.vcxproj] 
atlmfc\include\afxrendertarget.h(142): error C2059: syntax error: '{' [C:\projects\pgpfone\src\win32\PGPfone.vcxproj] 
atlmfc\include\afxrendertarget.h(142): error C2334: unexpected token(s) preceding '{'; skipping apparent function body [C:\projects\pgpfone\src\win32\PGPfone.vcxproj] 

は完全なログです: https://ci.appveyor.com/project/ysangkok/pgpfone

私は、エラーを引き起こしているものを見つけることができますどのように?私は、PGPFWinUtils.cppのコードは、エラーを引き起こすマクロを間違って呼び出すヘッダを含んでいると仮定していますが、どこにあるのか分かりません。

Visual C++でマクロバックトレースを取得することは可能ですか?私はClangやGCCがこの機能を持っていることを覚えています。 https://github.com/ysangkok/pgpfone/blob/master/src/win32/PGPFWinUtils.cpp

私はAppVeyorにコンパイルしています、と私はローカルafxrendertarget.hの情報源を持っていない:ここでは

は、完全なソースです。 Ubuntuでヘッダー検査用のWindows SDKをダウンロードするにはどうすればよいですか?

+0

「マクロバックトレース」とは何ですか?プリプロセッサ出力?また、リモートデスクトップを使用してAppVeyorインスタンスにログインすることもできますか? – stijn

+0

含まれている非MFCヘッダーを確認します。おそらく '#define'の中には' MFCの 'CD2DSizeF :: IsNull()'宣言を破るIsNullというマクロがあります。 – dxiv

+0

@stijn:マクロバックトレースでは、[here](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45333#c0)のように、マクロがどこから呼び出されたかを示すリストを意味します。私は今、RDPヘッダーと非MFCヘッダーをチェックします。 –

答えて

4
atlmfc\include\afxrendertarget.h(142): warning C4003: not enough actual parameters for macro 'IsNull' [C:\projects\pgpfone\src\win32\PGPfone.vcxproj] 

最初のエラーは、手がかりのカップルを提供する:

  • ライン#142afxrendertarget.hCD2DSizeFのメンバ関数BOOL IsNull() constのインライン定義です。

  • C4003は、マクロIsNullの不正な展開を指します。

このことは、いくつかの他の非MFCヘッダファイル#defineのマクロIsNull、そのヘッダが前に含まれている場合(MFCヘッダーファイルは、)afxrendertarget.hIsNullマクロブレークIsNullメンバ関数宣言。