我正在使用MSVC Ultimate 2012的Windows Server 2008 R2 Standard(SP1)。我試圖爲64位平臺編譯一個我的「C」項目(但似乎問題與目標無關) 。該項目包含一個* .pc文件,該文件必須由Pro * C/C++預編譯器預編譯。問題是,我無法預編譯該文件。 解析windows.h頭文件時預編譯失敗。請幫忙!!!爲什麼Pro * C/C++ Oracle預編譯器無法解析windows.h頭文件?
更多細節:
1)源文件:我my.pc文件的開頭如下:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <assert.h>
#include <sqlca.h>
#include <sqlcpr.h>
…..
注意:第一#include <windows.h>
是足夠的錯誤調用。
2)配置文件:默認pcscfg.cfg文件是空的,項目配置文件my.cfg看起來像如下:
sys_include=(d:\Progra~1\Micros~2.0\VC\include,c:\Progra~2\WI3CF2~1\8.0\Include\um,c:\Progra~2\WI3CF2~1\8.0\Include\shared,$PROC11_ORACLE_HOME\PRECOMP\PUBLIc)
sqlcheck=full
parse=FULL
define=_WIN64 (or without this line)
注:d:\ PROGRA〜1個\ MICROS〜2.0 \ VC \ include = D:\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ include,c:\ Progra〜2 \ WI3CF2〜1 \ 8.0 \ Include \ um = C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ um,c:\ Progra〜2 \ WI3CF2〜1 \ 8.0 \ Include \ shared = C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ shared,$ PROC11_ORACLE_HOME = d:\ oracle \ product \ 11.2.0 \ client_2的。那些路徑在那裏可以找到所有需要的頭文件。
3)命令行:我已經定義了下面的命令行中自定義我my.pc文件生成工具/常規選項:
$(PROC11_ORACLE_HOME)\bin\proc config=.\my.cfg iname=%(Filename).pc oname=.\%(Filename).c include="$(MSDEV_HOME)\vc\include".
注:$(MSDEV_HOME)= d: \ Program Files \ Microsoft Visual Studio 10.0。
4)平臺: MSVC平臺設置爲x64,但我也獲得了類似的Win32結果。
5)錯誤消息:錯誤消息預編譯期間接收到的是否存在限定= _WIN64在my.cfg文件涉及:
1> Syntax error at line 46, column 1, file d:\Progra~1\Micros~2.0\VC\include\vadefs.h:
1> Error at line 46, column 1 in file d:\Progra~1\Micros~2.0\VC\include\vadefs.h
1> typedef unsigned __int64 uintptr_t;
1> 1
1> **PCC-S-02201, Encountered the symbol "typedef" when expecting one of the following:**
1> ; , = ([
1> The symbol ";" was substituted for "typedef" to continue.
6)錯誤消息:預編譯期間接收錯誤消息如果限定= _WIN64不參與在my.cfg文件:
1> Syntax error at line 48, column 1, file d:\Progra~1\Micros~2.0\VC\include\vadefs.h:
1> Error at line 48, column 1 in file d:\Progra~1\Micros~2.0\VC\include\vadefs.h
1> typedef _W64 unsigned int uintptr_t;
1> 1
1> **PCC-S-02201, Encountered the symbol "typedef" when expecting one of the following:**
1> ; , = ([
7)文件vadefs.h:在vadefs.h頭文件看看關鍵的線條狀如下:
#ifndef _UINTPTR_T_DEFINED
#ifdef _WIN64
typedef unsigned __int64 uintptr_t; (this is line no. 46)
#else
typedef _W64 unsigned int uintptr_t; (this is line no. 48)
#endif
#define _UINTPTR_T_DEFINED
#endif
的問題是,爲什麼在預編譯標準的Microsoft頭文件失敗。可能在宏中有一些混亂,例如一些與_WIN64相關的東西?或者我應該添加另一個宏到配置文件?我讀過很多討論,但沒有取得進展。任何想法將非常感激!
再次大家好!我可以看到我的問題還沒有迴應。 :-(好吧,有人可以重複我的嘗試,只是嘗試預編譯一個.pc文件只有一行:#include?我想知道如果解析的Windows.h頭文件將失敗或不。 ! –
Daniel