2016-10-04 47 views
0

我想包括在項目(github.com/mmp/pbrt-v2)vdb頭是正確的,但

我曾嘗試VDB的例子編譯錯誤(未找到標識符),每例工作正常。

,但在這個項目(PBRT),我遇到了錯誤identifier not found

這裏是我的代碼:

#include "../vdb.h" 
#include "stdafx.h" 
#include "shapes/heightfieldImproved.h" 
#include "shapes/trianglemesh.h" 
#include "paramset.h" 

// heightfieldImproved Method Definitions 
HeightfieldImproved::HeightfieldImproved(const Transform *o2w, const Transform *w2o, bool ro, int x, int y, const float *zs) 
    : Shape(o2w, w2o, ro) { 
    nx = x; 
    ny = y; 
    z = new float[nx*ny]; 
    memcpy(z, zs, nx*ny*sizeof(float)); 

    nVoxels[0] = nx - 1; 
    nVoxels[1] = ny - 1; 
    nVoxels[2] = 1; 

    ComputeVertexNormal(); 
    vdb_line(0, 0, 0, 1, 1, 1); 
} 

智能感知正常工作,它知道什麼vdb_line()是,但是當我建立整個項目,引發的錯誤("vdb_line": identifier not found

我使用的Visual Studio 2015年win10

謝謝!

---編輯---
我改變包括爲完整路徑

#include "C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h" 

,仍然得到同樣的錯誤....
那裏只是只有一個錯誤:

"vdb_line": identifier not found

滿滿的日誌

1>------ Build started: Project: libpbrt, Configuration: Debug x64 ------ 
1> 
1> Microsoft (R) Program Maintenance Utility Version 12.00.21005.1 
1> Copyright (C) Microsoft Corporation. All rights reserved. 
1> 
1>  if exist ( -d -v -t -o ..\core\pbrtparse.cpp ..\core\pbrtparse.yy ) 
1>  if exist ( -o..\core\pbrtlex.cpp ..\core\pbrtlex.ll ) 
1> 
1> Microsoft (R) Program Maintenance Utility Version 12.00.21005.1 
1> Copyright (C) Microsoft Corporation. All rights reserved. 
1> 
1> heightfieldImproved.cpp 
1>..\shapes\heightfieldImproved.cpp(25): error C3861: 'vdb_line': identifier not found 
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ========== 

--- edited2 --- 我改變的包括訂單後,如下圖:

#include "stdafx.h" 
#include "C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h" 

我得到很多的錯誤:

1>------ Build started: Project: libpbrt, Configuration: Debug x64 ------ 
1> 
1> Microsoft (R) Program Maintenance Utility Version 12.00.21005.1 
1> Copyright (C) Microsoft Corporation. All rights reserved. 
1> 
1>  if exist ( -d -v -t -o ..\core\pbrtparse.cpp ..\core\pbrtparse.yy ) 
1>  if exist ( -o..\core\pbrtlex.cpp ..\core\pbrtlex.ll ) 
1> 
1> Microsoft (R) Program Maintenance Utility Version 12.00.21005.1 
1> Copyright (C) Microsoft Corporation. All rights reserved. 
1> 
1> heightfieldImproved.cpp 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(221): error C2011: 'sockaddr' : 'struct' type redefinition 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(477) : see declaration of 'sockaddr' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(421): error C2059: syntax error : 'constant' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(421): error C3805: 'constant': unexpected token, expected either '}' or a ',' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(615): error C2011: 'sockaddr_in' : 'struct' type redefinition 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(304) : see declaration of 'sockaddr_in' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(136): error C2011: 'fd_set' : 'struct' type redefinition 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(60) : see declaration of 'fd_set' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(180): error C2011: 'timeval' : 'struct' type redefinition 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(103) : see declaration of 'timeval' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(236): error C2011: 'hostent' : 'struct' type redefinition 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(159) : see declaration of 'hostent' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(249): error C2011: 'netent' : 'struct' type redefinition 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(172) : see declaration of 'netent' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(256): error C2011: 'servent' : 'struct' type redefinition 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(179) : see declaration of 'servent' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(268): error C2011: 'protoent' : 'struct' type redefinition 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(191) : see declaration of 'protoent' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(364): error C2011: 'WSAData' : 'struct' type redefinition 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(314) : see declaration of 'WSAData' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(462): error C2011: 'sockproto' : 'struct' type redefinition 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(486) : see declaration of 'sockproto' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(504): error C2011: 'linger' : 'struct' type redefinition 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(523) : see declaration of 'linger' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1650): error C2375: 'accept' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(734) : see declaration of 'accept' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1672): error C2375: 'bind' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(739) : see declaration of 'bind' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1691): error C2375: 'closesocket' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(744) : see declaration of 'closesocket' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1710): error C2375: 'connect' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(746) : see declaration of 'connect' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1731): error C2375: 'ioctlsocket' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(751) : see declaration of 'ioctlsocket' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1752): error C2375: 'getpeername' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(756) : see declaration of 'getpeername' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1773): error C2375: 'getsockname' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(761) : see declaration of 'getsockname' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1796): error C2375: 'getsockopt' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(766) : see declaration of 'getsockopt' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1817): error C2375: 'htonl' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(773) : see declaration of 'htonl' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1834): error C2375: 'htons' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(775) : see declaration of 'htons' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1852): error C2375: 'inet_addr' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(777) : see declaration of 'inet_addr' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1870): error C2375: 'inet_ntoa' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(779) : see declaration of 'inet_ntoa' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1971): error C2375: 'listen' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(781) : see declaration of 'listen' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(1989): error C2375: 'ntohl' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(785) : see declaration of 'ntohl' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2006): error C2375: 'ntohs' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(787) : see declaration of 'ntohs' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2026): error C2375: 'recv' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(789) : see declaration of 'recv' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2051): error C2375: 'recvfrom' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(795) : see declaration of 'recvfrom' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2077): error C2375: 'select' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(803) : see declaration of 'select' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2101): error C2375: 'send' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(810) : see declaration of 'send' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2126): error C2375: 'sendto' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(816) : see declaration of 'sendto' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2152): error C2375: 'setsockopt' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(824) : see declaration of 'setsockopt' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2174): error C2375: 'shutdown' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(831) : see declaration of 'shutdown' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2195): error C2375: 'socket' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(835) : see declaration of 'socket' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2220): error C2375: 'gethostbyaddr' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(842) : see declaration of 'gethostbyaddr' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2240): error C2375: 'gethostbyname' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(847) : see declaration of 'gethostbyname' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2258): error C2375: 'gethostname' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(849) : see declaration of 'gethostname' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2298): error C2375: 'getservbyport' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(853) : see declaration of 'getservbyport' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2317): error C2375: 'getservbyname' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(857) : see declaration of 'getservbyname' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2335): error C2375: 'getprotobynumber' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(861) : see declaration of 'getprotobynumber' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2352): error C2375: 'getprotobyname' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(863) : see declaration of 'getprotobyname' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2373): error C2375: 'WSAStartup' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(867) : see declaration of 'WSAStartup' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2392): error C2375: 'WSACleanup' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(871) : see declaration of 'WSACleanup' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2409): error C2375: 'WSASetLastError' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(873) : see declaration of 'WSASetLastError' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2426): error C2375: 'WSAGetLastError' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(875) : see declaration of 'WSAGetLastError' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2447): error C2375: 'WSAIsBlocking' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(877) : see declaration of 'WSAIsBlocking' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2465): error C2375: 'WSAUnhookBlockingHook' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(879) : see declaration of 'WSAUnhookBlockingHook' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2483): error C2375: 'WSASetBlockingHook' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(881) : see declaration of 'WSASetBlockingHook' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2501): error C2375: 'WSACancelBlockingCall' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(883) : see declaration of 'WSACancelBlockingCall' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2524): error C2375: 'WSAAsyncGetServByName' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(885) : see declaration of 'WSAAsyncGetServByName' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2552): error C2375: 'WSAAsyncGetServByPort' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(893) : see declaration of 'WSAAsyncGetServByPort' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2579): error C2375: 'WSAAsyncGetProtoByName' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(901) : see declaration of 'WSAAsyncGetProtoByName' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2605): error C2375: 'WSAAsyncGetProtoByNumber' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(908) : see declaration of 'WSAAsyncGetProtoByNumber' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2631): error C2375: 'WSAAsyncGetHostByName' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(915) : see declaration of 'WSAAsyncGetHostByName' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2659): error C2375: 'WSAAsyncGetHostByAddr' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(922) : see declaration of 'WSAAsyncGetHostByAddr' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2683): error C2375: 'WSACancelAsyncRequest' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(931) : see declaration of 'WSACancelAsyncRequest' 
1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(2704): error C2375: 'WSAAsyncSelect' : redefinition; different linkage 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(933) : see declaration of 'WSAAsyncSelect' 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(60): error C3861: 'closesocket': identifier not found 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(102): error C2568: '=' : unable to resolve function overload 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(835): could be 'SOCKET socket(int,int,int)' 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(102): error C3861: 'socket': identifier not found 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(107): error C2079: 'serv_name' uses undefined struct 'sockaddr_in' 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(108): error C2228: left of '.sin_family' must have class/struct/union 
1>   type is 'int' 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(109): error C2228: left of '.sin_addr' must have class/struct/union 
1>   type is 'int' 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(109): error C2228: left of '.S_un' must have class/struct/union 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(109): error C2228: left of '.S_addr' must have class/struct/union 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(109): error C3861: 'htonl': identifier not found 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(110): error C2228: left of '.sin_port' must have class/struct/union 
1>   type is 'int' 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(110): error C3861: 'htons': identifier not found 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(111): error C2568: '==' : unable to resolve function overload 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(746): could be 'int connect(SOCKET,const sockaddr *,int)' 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(111): error C3861: 'connect': identifier not found 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(126): error C2568: '=' : unable to resolve function overload 
1>   C:\Program Files (x86)\Windows Kits\8.1\Include\um\winsock.h(810): could be 'int send(SOCKET,const char *,int,int)' 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(126): error C3861: 'send': identifier not found 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(215): error C3861: 'WSAGetLastError': identifier not found 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(215): error C2440: 'initializing' : cannot convert from 'int (__cdecl *)(void)' to 'int' 
1>   There is no context in which this conversion is possible 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(229): error C2079: 'wsaData' uses undefined struct 'WSAData' 
1>C:\Users\ssarcandy\Documents\GitHub\pbrt-v2\src\vdb.h(230): error C3861: 'WSAStartup': identifier not found 
2>------ Build started: Project: pbrt, Configuration: Debug x64 ------ 
2>LINK : fatal error LNK1104: cannot open file 'libpbrt.lib' 
========== Build: 0 succeeded, 2 failed, 0 up-to-date, 0 skipped ========== 
+0

vdb_line()不是類HeightfieldImproved的成員嗎? – Raindrop7

+0

您是否可以在構建項目時包含完整的錯誤消息? – Ionut

+0

vdb_line()是vdb.h中定義的函數。 – SSARCandy

回答

0

包含vdb.h的適當位置在stdafx.h之後,而不是之前。默認情況下,如果您的項目設置爲使用預編譯頭文件,它將忽略源文件中stdafx.h之前的所有內容。你應該看到一個警告你在你的文章中提到的錯誤之前告訴你這一點:

warning C4627: '#include "vdb.h"': skipped when looking for precompiled header use 
note: Add directive to 'StdAfx.h' or rebuild precompiled header 

這是方式,後來未能編譯告訴你它找不到該功能。

現在,如果在stdafx.h之後移動include語句,則會出現很多錯誤,其中大多數錯誤都與WinSock相關名稱的重複定義有關。 這是因爲你最終包括winsock.hWinSock2.h。第一個包含從windows.h包括在其中包含在從stdafx.h開始並結束於parallel.h長鏈。第二個從vdb.h直接包含。

爲了解決這個問題,你可以通過兩種方式去:

1. windows.h不包括winsock.h自動

要做到這一點,你定義宏WIN32_LEAN_AND_MEAN在stdafx.h頂部,之前的任何其他包括聲明。

#define WIN32_LEAN_AND_MEAN 

這禁用了幾個頭的加入除了winsock.h,所以當你這樣做,你可能會得到一些新的錯誤。您可以嘗試通過直接在需要的地方添加適當的標題來解決這些問題。

我不熟悉PBRT項目和它的源代碼,我不知道它是否實際使用WinSock,或者它只是在沒有意識到的情況下包含頭文件,所以我不能確切地告訴你什麼新問題你可能會遇到。

2.轉換到vdb用winsock代替Winsock2的

我不熟悉這個項目無論所以我不能告訴你多少工作,這將涉及。但是,如果由於某種原因第一種方法失敗,首先看起來可行。

+0

GREAT THANKS !!!感謝您對'stdafx.h'的明確解釋,嘗試方法2後,一切正常! – SSARCandy

0

編譯器不知道vdb_line是什麼。該生產線

的#include 「../vdb.h」

可能不是因爲頭文件正確,根據你的github上的鏈接,確實有cdb_line deklaration。嘗試使用顯式路徑來驗證vdb.h。將頭文件相對於您的工作目錄正確放置,使其包含「../vdb.h」。

智能感知擁有它的力學。默認情況下,它僅使用標準包含目錄來查找頭文件。但是可以添加其他文件,甚至非項目文件,以便智能感知解析。 intellisense知道聲明並且編譯器不知道爲什麼,我們將不得不考慮您的visual studio項目設置,這並不奇怪。

+0

它肯定有一個https://github.com/zdevito/vdb/blob/master/vdb.h#L160。 –

+0

感謝您的回答,我更新了問題。我包含使用絕對路徑的頭仍然得到相同的結果,智能感知工作正常,但編譯器無法找到它。 – SSARCandy

相關問題