未能编译"你好世界" Poco的网络服务器应用程序

时间:2016-02-12 02:02:44

标签: mfc poco-libraries

当我在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_STATUSSERVICE_STATUS_HANDLE看起来像#defined一样。是否有编译器设置或预处理器定义可以执行此操作? Poco用户应该注意陷入的陷阱是什么? Poco和MFC之间是否存在兼容性问题?

更新:我可以通过下载this zipped project引用的this potentially relevant article来独立于我的应用程序重现该问题...这构建正常...但是我尝试的那一刻指定额外的include文件夹并包含serverapplication.h,会发生这些错误。在Poco ServerApplication类文档页面中没有提及任何依赖项。

2 个答案:

答案 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