我有一点问题,我不知道如何解决它(遗憾的是)。
我想编译一个Awesomium 1.7RC2 SDK的示例项目,它可以和vs10一起使用,但是对于vs11,我确实会遇到一些错误。
这些是错误:
http://pastebin.com/6RdUffve
它们是由以下代码行引起的:
method_dispatcher_.Bind(app_object,
WSLit("SayHello"),
&Application::OnSayHello);
method_dispatcher_.Bind(app_object,
WSLit("Exit"),
&Application::OnExit);
method_dispatcher_.BindWithRetval(app_object,
WSLit("GetSecretMessage"),
&Application::OnGetSecretMessage);
调度员类的代码:
标题:http://pastebin.com/ktTEuQ4T
来源:http://pastebin.com/FTDHQzJ9
我希望有人可以帮助我:)。
答案 0 :(得分:1)
这似乎是由VS2012中的一个错误引起的,其中std :: function不会隐式地将成员函数指针转换为函数指针。这个例子应该根据Bjarne Stroustroups C ++ 11常见问题解答,在我的VS2012中引发同样的错误:
struct X {
int foo(int);
};
function<int (X*, int)> f;
f = &X::foo; // pointer to member
X x;
int v = f(&x, 5); // call X::foo() for x with 5
您可以通过创建静态函数(如
)来解决此问题void StaticOnSayHello(Application* app, Awesomium::WebView* caller, const Awesomium::JSArray &args) {
app->OnSayHello(caller, args);
}
等,并将这些作为method_dispatcher :: Bind的第三个参数。