我有一个小问题,我不知道如何解决(很遗憾)。
我想编译 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
我希望有人能帮助我:)
最佳答案
这似乎是由VS2012中的一个错误引起的,其中std::function不会隐式地将成员函数指针转换为函数指针。这个例子,根据 Bjarne Stroustroups C++11 FAQ 应该工作,在我的 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 的第三个参数。
关于c++ - Awesomium 1.7RC2 与 VS11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11937908/