【发布时间】:2015-08-12 14:59:37
【问题描述】:
编辑:最小化代码示例
#include <iostream>
#include <functional>
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <Wt/WServer>
Wt::WApplication *createApplication(const Wt::WEnvironment& env, int i) {
return new Wt::WApplication(env);
}
int main(int argc, char** argv)
{
Wt::WRun(argc, argv,boost::bind(&createApplication, _1, 1));
}
错误 94 错误 C2198: 'Wt::WApplication *(__cdecl *)(const Wt::WEnvironment &,int)' : 调用的参数太少 \wt-3.3.4-msvs2013-windows-x86-sdk\包括\提升\功能\function_template.hpp 95 1
同样失败,Wt::WRun(argc, argv,std::bind(&createApplication, std::placeholders::_1, 1)); 出现完全相同的错误。
老例子
我正在使用库Wt,它有一个函数Wt::WRun(),它接受一个函数作为第三个参数,在本例中是application_creator,它返回一个指向Wt 类型的指针并接受一个参数。到现在为止还挺好。这个函数是用户提供的,可能需要更多参数,我这样做了,还有一个 lib 显示的 example(参见 main.c,Wt::WSever::addEntryPoint 采用与 WRun 相同的参数)。
所以我想像示例中那样绑定我的附加参数。我的解决方案可以使用 gcc/mingw 完美编译,但使用 MSVC/Visual Studio 2013 Express 时会失败并出现错误
错误 94 错误 C2198: 'Wt::WApplication *(__cdecl *)(const Wt::WEnvironment &,int)' : 调用的参数太少 ...include\boost\function\function_template.h
我的电话:Wt::WRun(argc, argv,boost::bind(MDDB_Service::application_creator, _1, 5));
回调Wt::WApplication* MDDB_Service::application_creator(const Wt::WEnvironment& env, int foo);的定义
WT::WRun的定义:
#define WTCONNECTOR_API __declspec(dllimport)
typedef boost::function<WApplication* (const WEnvironment&)> ApplicationCreator;
int WTCONNECTOR_API WRun(int argc, char** argv,
ApplicationCreator createApplication = 0);
Wt::WRun(argc, argv,std::bind(MDDB_Service::application_creator, std::placeholders::_1, 5));也一样
错误 94 错误 C2198: 'Wt::WApplication *(__cdecl *)(const Wt::WEnvironment &,int)' : 调用的参数太少 ... include\boost\function\function_template.hpp
【问题讨论】:
-
MDDB_Service::application_creator的签名是什么? -
抱歉忘记了,我是通过编辑添加的。谢谢!
-
什么是“Visual Studio 2013 Essentials”?
-
对不起应该改名为“快递”
-
application_creator是成员函数吗?