2011-01-25 10 views
5

मुझे एक बड़ी बड़ी समस्या है। मैं WinHttp का उपयोग C++ के साथ फ़ाइल डाउनलोड करने का प्रयास कर रहा हूं और मैं इस काम को करने के लिए विजुअल स्टूडियो 2010 का उपयोग कर रहा हूं।सी ++ 307 विज़ुअल स्टूडियो 2010 में winhttp.h को शामिल करने का प्रयास करते समय त्रुटियां

मेरी समस्या यह है कि प्रोग्राम संकलित नहीं है क्योंकि 307 त्रुटियां उत्पन्न हुई हैं, सभी winhttp.h पर प्रतिक्रिया दे रही हैं। मैं उल्लेख करता हूं कि मैंने उस फ़ाइल को शामिल किया है। क्या समस्या हो सकती है? धन्यवाद!

------ Build started: Project: a, Configuration: Debug Win32 ------ 

    b. Cpp 

    a. Cpp 

c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(50): error C2146: 
Syntax error: missing ';' before identifier 'HINTERNET' 

c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(50): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 

c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(50): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 

c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(51): error C2143: syntax error: missing ';' before '*' 

c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(51): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 

c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(51): error C2378: 'HINTERNET': redefinition; symbol cannot be overloaded with a typedef 

      c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(50): see declaration of 'HINTERNET' 


c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(51): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 

c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(53): error C2146: syntax error: missing ';' before identifier 'INTERNET_PORT' 

c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(53): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(53): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(54): error C2143: syntax error: missing ';' before '*' 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(54): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(54): error C2378: 'INTERNET_PORT': redefinition; symbol cannot be overloaded with a typedef 
      c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(53): see declaration of 'INTERNET_PORT' 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(54): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(95): error C2146: syntax error: missing ';' before identifier 'dwResult' 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(95): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(95): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(96): error C2146: syntax error: missing ';' before identifier 'dwError' 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(96): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(96): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(107): error C2146: syntax error: missing ';' before identifier 'dwMajorVersion' 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(107): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(107): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(108): error C2146: syntax error: missing ';' before identifier 'dwMinorVersion' 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(108): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(108): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(144): error C2146: syntax error: missing ';' before identifier 'dwStructSize' 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(144): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(144): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c: \program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp. H(145): error C2146: syntax error: missing ';' before identifier 'lpszScheme' 

अब मैं एक और समस्या है:

वहाँ कुछ कर रहे हैं। यह मेरा कोड है:

#include <windows.h> 
#include <winhttp.h> 
#include <stdio.h> 
#include <iostream> 
using namespace std; 
#include <string.h> 

int main() 
{ 
    DWORD dwSize = 0; 
    DWORD dwDownloaded = 0; 
    LPBYTE pszOutBuffer; 
    BOOL bResults = FALSE; 
    HINTERNET hSession = NULL, hConnect = NULL, hRequest = NULL; 

// Use WinHttpOpen to obtain a session handle. 
hSession = WinHttpOpen(L"Internet Explorer example", 
    WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, 
    WINHTTP_NO_PROXY_NAME, 
    WINHTTP_NO_PROXY_BYPASS, 0); 

// Specify an HTTP server. 
if(hSession) 
    hConnect = WinHttpConnect(hSession, L"www.my-new-gadget.com", 
    INTERNET_DEFAULT_HTTPS_PORT, 0); 

// Create an HTTP request handle. 
if(hConnect) 
    hRequest = WinHttpOpenRequest(hConnect, L"GET", L"index.php", 
    NULL, WINHTTP_NO_REFERER, 
    NULL, NULL); 

// Send a request. 
if(hRequest) 
    bResults = WinHttpSendRequest(hRequest, 
    WINHTTP_NO_ADDITIONAL_HEADERS, 0, 
    WINHTTP_NO_REQUEST_DATA, 0, 
    0, 0); 

// End the request. 
if(bResults) 
    bResults = WinHttpReceiveResponse(hRequest, NULL); 

HANDLE hFile = CreateFile("D:\\index.php", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 

if (bResults) 
{ 
    do  
    {   
     // Check for available data.   
     dwSize = 0;   
     if (!WinHttpQueryDataAvailable(hRequest, &dwSize)) 
      printf("Error %u in WinHttpQueryDataAvailable.\n", GetLastError());   
     // Allocate space for the buffer.   
     pszOutBuffer = new byte[dwSize+1];   
     if (!pszOutBuffer)   
     {    
      printf("Out of memory\n");    
      dwSize=0;   
     }   
     else   
     {    
      // Read the Data.    
      ZeroMemory(pszOutBuffer, dwSize+1);    
      if (!WinHttpReadData(hRequest, (LPVOID)pszOutBuffer, dwSize, &dwDownloaded))     
      {     
       printf("Error %u in WinHttpReadData.\n", GetLastError());     
      }    
      else     
      {       
       //printf("%s", pszOutBuffer); 
       DWORD wmWritten; 
       bool fr = WriteFile(hFile, pszOutBuffer, dwSize, &wmWritten, NULL); 
       int n = GetLastError();    
      }    
      // Free the memory allocated to the buffer.    
      delete [] pszOutBuffer;   
     }  
    } while (dwSize>0); 
} 

CloseHandle(hFile); 
// Report any errors. 
if (!bResults)  
    printf("Error %d has occurred.\n",GetLastError()); 
// Close any open handles. 
if (hRequest) WinHttpCloseHandle(hRequest); 
if (hConnect) WinHttpCloseHandle(hConnect); 
if (hSession) WinHttpCloseHandle(hSession); 

return 0; 
} 

और उत्पादन होता है:

------ Build started: Project: a, Configuration: Debug Win32 ------ 
    a.cpp 
c:\users\admin\documents\visual studio 2010\projects\a\a\a.cpp(73): warning C4800: 'BOOL' : forcing value to bool 'true' or 'false' (performance warning) 
a.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _main 
a.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _main 
a.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _main 
a.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _main 
a.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _main 
a.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _main 
a.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _main 
a.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _main 
MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function ___tmainCRTStartup 
c:\users\admin\documents\visual studio 2010\Projects\a\Debug\a.exe : fatal error LNK1120: 9 unresolved externals 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

क्या अब समस्या हो सकती है? मैं किसी दिए गए यूआरएल से फाइल डाउनलोड करने के लिए कार्यक्रम का एक टुकड़ा बनाने के लिए 2 दिनों का प्रयास कर रहा हूं। यह मुझे पागल कर रहा है! कृपया मेरी मदद करें!

+0

कुछ कोड पोस्ट करें .. हमें कुछ त्रुटियां भी दें, मुझे लगता है कि उनमें से अधिकतर समान हैं। –

+0

क्या आप पूरे त्रुटि संदेश पोस्ट कर सकते हैं? – peoro

+0

संपूर्ण '# शामिल' ब्लॉक पोस्ट करें। संभवतः कुछ निर्भरताएं गायब हैं (जैसे 'windows.h' या कुछ)। – detunized

उत्तर

7

#include <winhttp.h> से पहले #include <windows.h> जोड़ें।

संबंधित मुद्दे