当我在Google上搜索" poco网络服务器示例"时,它提供给我的第一个链接是this one。现在无可否认它已经获得了零星评级,谷歌提供了一个更正式的例子来自Poco列表的一步。尽管如此,该示例非常简单,因此我尝试将其添加到现有(MFC)项目并进行编译。当我这样做时,我得到了这些错误:
[...]serverapplication.h(215): error C3646: '_serviceStatus': unknown override specifier
[...]serverapplication.h(215): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
[...]serverapplication.h(216): error C3646: '_serviceStatusHandle': unknown override specifier
[...]serverapplication.h(216): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
serverapplication.h
中的这两行出错:
static SERVICE_STATUS _serviceStatus;
static SERVICE_STATUS_HANDLE _serviceStatusHandle;
当然,即使我所做的只是包含Poco头文件而没有其他内容,错误仍然存在...所以它不像我的代码有问题,它就是&#39更多我的环境有问题。实际上,如果我用Poco自己的HTTPTimeServer示例中的较长列表替换8个Poco头文件+ 3个STL头的列表,那么我会得到完全相同的错误(顺便说一下,它编译并运行得很好)。
SERVICE_STATUS
和SERVICE_STATUS_HANDLE
看起来像#defined一样。是否有编译器设置或预处理器定义可以执行此操作? Poco用户应该注意陷入的陷阱是什么? Poco和MFC之间是否存在兼容性问题?
更新:我可以通过下载this zipped project引用的this potentially relevant article来独立于我的应用程序重现该问题...这构建正常...但是我尝试的那一刻指定额外的include文件夹并包含serverapplication.h
,会发生这些错误。在Poco ServerApplication类文档页面中没有提及任何依赖项。
答案 0 :(得分:0)
SERVICE_STATUS
是Windows SDK中定义的结构。
SERVICE_STATUS structure documentation表示
包括Windows.h
您是否尝试过#include <Windows.h>
?
修改强>
由于您尝试将其添加到MFC应用程序,您是否尝试添加#include "stdafx.h"
?
答案 1 :(得分:0)
要在MFC项目中包含POCO的ServerApplication.h
标头文件,请在#include <winsvc.h>
之前尝试#include "ServerApplication.h"
。请注意,您不得在MFC项目中包含Windows.h
,该项目通常包括winsvc.h
。