C++ HttpFilterProc不在c++;
我正在做一些与cookie相关的任务,为此我使用了下面的文章 在编译以下代码时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
#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)
{
//...
}