C++ HttpFilterProc不在c++;

C++ HttpFilterProc不在c++;,c++,winapi,cookies,mfc,C++,Winapi,Cookies,Mfc,我正在做一些与cookie相关的任务,为此我使用了下面的文章 在编译以下代码时 #include <windows.h> #include <httpfilt.h> #include "tchar.h" #include "strsafe.h" // Portion of HttpOnly DWORD WINAPI HttpFilterProc( PHTTP_FILTER_CONTEXT pfc, DWORD dwNotificationType, L

我正在做一些与cookie相关的任务,为此我使用了下面的文章

在编译以下代码时

#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;
}
#包括
#包括
#包括“tchar.h”
#包括“strsafe.h”
//HttpOnly部分
DWORD WINAPI HttpFilterProc(
PHTTP_过滤器_上下文pfc,
DWORD dwNotificationType,
LPVOID(通知){
//硬编码cookie长度(2k字节)
CHAR-szCookie[2048];
DWORD cbCookieOriginal=sizeof(szCookie)/sizeof(szCookie[0]);
DWORD cbCookie=cbCookie原件;
HTTP_筛选器_发送_响应*响应前=
(HTTP_FILTER_SEND_RESPONSE*)pvNotification;
CHAR*szHeader=“设置Cookie:”;
CHAR*szHttpOnly=“;HttpOnly”;
if(响应前->获取标题(pfc、szHeader、szCookie和cbCookie)){
如果(成功)(StringCchCat(szCookie,
CBCookie原创,
(仅限Szhttp){
如果(!pResponse->SetHeader(pfc,
szHeader,
szCookie){
//安全失败-不发送cookie!
预应答->设置标题(pfc,szHeader,“”);
}
}否则{
预应答->设置标题(pfc,szHeader,“”);
}
}
返回SF_状态_请求_下一个_通知;
}
我得到以下错误:错误C2375:'HttpFilterProc':重新定义;不同的链接

如何解决此错误?

添加
外部“C”


我怀疑
HttpFilterProc
在标题
httpfilt.h

中被声明为extern“C”

您是否有该函数的原型?如果是这样的话,您是否还记得在那里声明它
WINAPI
?@JoachimPileborg感谢您的评论是的,这个函数在httpfilt.h文件中有原型。visual studio 2010的完整路径是c:\program files(x86)\microsoft SDK\windows\v7.0a\include\httpfilt.h
extern "C" DWORD WINAPI HttpFilterProc(
    PHTTP_FILTER_CONTEXT pfc,
    DWORD dwNotificationType,
    LPVOID pvNotification)
{
//...
}