2012-08-13 55 views
2

我有一個小問題,我不知道如何解決它(可悲)。Awesomium 1.7RC2與VS11

我想編譯一個Awesomium 1.7RC2 SDK的示例項目,它可以正常使用vs10,但是對於vs11,我確實會得到一些錯誤。

這些都是錯誤:

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/6RdUffve 

它們由這些行的代碼所引起來源:http://pastebin.com/FTDHQzJ9

我希望有人能幫助我:)

回答

1

這似乎在VS2012中的錯誤,其中的std ::函數不會隱式轉換成員函數指針的函數指針引起的。這個例子,應該根據比亞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的第三個參數。