2009-02-25 37 views
2

SDK ile örnek bir http sınıfı derlemeye çalışıyorum ve bazı garip bağlantı hataları alıyorum ... Emin bir seçeneği eksik bir seçenekle veya dizine göre ...C++ WinHttp/Windows SDK ile sorun derleme

Gördüğünüz gibi C++ konusunda uzman değilim, ancak herhangi bir yardım arıyorum.

Örnek sınıfımı dahil ettim. Windows SDK'yi de kurdum. Kurulumlarım veya başka bir şey hakkında başka bir bilgiye ihtiyacınız varsa, lütfen sorun. Birinin beni çalışan bir WinHttp SDK örnek projesine yönlendirmesini tercih ederim.

//START OF utils.cpp 
#pragma once 
#include "stdafx.h" 

class http 
{ 
public: 
    http(); 
    ~http(); 

    std::string getText(); 

}; 
//END OF utils.cpp 

//START OF utils.cpp 
#include "stdafx.h" 
#include "utils.h" 

http::http() 
{ 
} 

http::~http() 
{ 
} 

std::string http::getText() 
{ 
    DWORD dwSize = 0; 
    DWORD dwDownloaded = 0; 
    LPSTR pszOutBuffer; 
    BOOL bResults = FALSE; 
    HINTERNET hSession = NULL, 
     hConnect = NULL, 
     hRequest = NULL; 

    // Use WinHttpOpen to obtain a session handle. 
    hSession = WinHttpOpen(L"WinHTTP Example/1.0", 
     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.microsoft.com", 
     INTERNET_DEFAULT_HTTPS_PORT, 0); 

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

    // 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); 

    // Keep checking for data until there is nothing left. 
    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 char[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); 

       // Free the memory allocated to the buffer. 
       delete [] pszOutBuffer; 
      } 
     } while(dwSize > 0); 
    } 


    // 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 ""; 
} 
//END OF utils.cpp 
Sen

değiştirme proje ayarlarını winhttp.lib veya .cpp dosyasına bu satırı eklemek bağlamanız gereken


1>------ Build started: Project: winagent, Configuration: Debug Win32 ------ 
1>Compiling... 
1>utils.cpp 
1>Linking... 
1> Creating library C:\winagent\Debug\winagent.lib and object C:\winagent\Debug\winagent.exp 
1>utils.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall http::getText(void)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@XZ) 
1>utils.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall http::getText(void)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@XZ) 
1>utils.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall http::getText(void)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@XZ) 
1>utils.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall http::getText(void)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@XZ) 
1>utils.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall http::getText(void)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@XZ) 
1>utils.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall http::getText(void)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@XZ) 
1>utils.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall http::getText(void)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@XZ) 
1>utils.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall http::getText(void)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@XZ) 
1>C:\winagent\Debug\winagent.exe : fatal error LNK1120: 8 unresolved externals 
1>Build log was saved at "file://c:\winagent\Debug\BuildLog.htm" 
1>winagent - 9 error(s), 0 warning(s) 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

cevap

9

Eğer WinHttp * işlevleri için MSDN başvuru işaretlerseniz size kütüphanede Winhttp.lib bağlamak gerektiğini göreceksiniz.

açın proje ayarları

, daha sonra 'girdi' bağlayıcı seçeneklerini seçmek ve 'Ek bağımlılıklar' listesine WinHttp.lib ekleyin.

Yoksa koyabilirsiniz kaynak kodunda

#pragma comment(lib, "winhttp.lib") 

(daha önce belirtildiği gibi).

4

#pragma comment(lib, "winhttp") 
+0

Dang. hızlısın. –

1

Winhttp.lib'da bağlantı kurduğunuzdan emin olun.

1

WinHttp kitaplığını bağlantı listenize eklemediniz.