2

I am working on some cookie related task, for that I used the following article http://msdn.microsoft.com/en-us/library/ms972826

While compiling following code,

#include <windows.h>
#include <httpfilt.h>
#include "tchar.h"
#include "strsafe.h"

// Portion of HttpOnly
DWORD WINAPI HttpFilterProc(
   PHTTP_FILTER_CONTEXT pfc,
   DWORD dwNotificationType,
   LPVOID pvNotification) {

   // Hard coded cookie length (2k bytes)
   CHAR szCookie[2048];
   DWORD cbCookieOriginal = sizeof(szCookie) / sizeof(szCookie[0]);
   DWORD cbCookie = cbCookieOriginal;

      HTTP_FILTER_SEND_RESPONSE *pResponse = 
         (HTTP_FILTER_SEND_RESPONSE*)pvNotification;

      CHAR *szHeader = "Set-Cookie:";
      CHAR *szHttpOnly = "; HttpOnly";
      if (pResponse->GetHeader(pfc,szHeader,szCookie,&cbCookie)) {
         if (SUCCEEDED(StringCchCat(szCookie,
                                    cbCookieOriginal,
                                    szHttpOnly))) {
            if (!pResponse->SetHeader(pfc,
                                      szHeader,
                                      szCookie)) {
                        // Fail securely - send no cookie!
                        pResponse->SetHeader(pfc,szHeader,"");
               }
            } else {
               pResponse->SetHeader(pfc,szHeader,"");
          }
   }

   return SF_STATUS_REQ_NEXT_NOTIFICATION;
}

I get following error: error C2375: 'HttpFilterProc' : redefinition; different linkage

How to solve this error ?

4

1 回答 1

1

添加一个extern "C"

extern "C" DWORD WINAPI HttpFilterProc(
    PHTTP_FILTER_CONTEXT pfc,
    DWORD dwNotificationType,
    LPVOID pvNotification)
{
//...
}

我怀疑HttpFilterProc在 header 中被声明为 extern "C" httpfilt.h

于 2013-07-30T09:34:17.937 回答