2013-04-18 86 views
3
dllmain.cpp(16): warning C4447: 'main' signature found without threading mode 
l. Consider using 'int main(Platform::Array<Platform::String^>^ args)'. 

以上是我從構建Windows應用商店應用DLL項目中得到的警告。除了包含我自己版本的pch之外,我沒有更改該默認dllmain.cpp文件中的任何內容。Visual Studio 2012無證警告C4447

此警告的文檔(與許多VS2012錯誤/警告一起)是無處可在MSDN上找到,這裏是唯一的相關鏈接,我可以找到:

http://social.msdn.microsoft.com/Forums/en-US/vssetup/thread/6daa9587-fe54-4e84-a8b9-0e5c52c2f6e8/

和運有沒沒有答案。

如果有人知道這意味着什麼以及如何解決這個問題,那就太棒了!

+1

考慮構建不帶'/ ZW'標誌的dllmain.cpp。 – susmits

+0

感謝峯會。這是一個很好的答案。如果您想將其作爲答案,我可以將其投票爲正確的。 – kakyo

回答

5

據我所知,你可以放心地忽略警告。當編譯器使用/ZW標誌(使用Windows運行時擴展)看到正在編譯的Win32風格DllMain時,編譯器會使用它。但是,函數按照您通常所期望的方式被調用。

或者,您可以通過編譯dllmain.cpp而不使用/ZW來解決警告。您可能需要調整PCH設置才能正常工作。這是DLL(Windows應用商店應用程序) Visual Studio中的C++/CX項目模板採用的路徑。

順便說一句,你不明白,當你試圖建立一個Windows運行時組件項目(建立使用/ZW一切)警告的原因是,在Windows運行時組件不聲明DllMain。這並不是說它不能;它只是拾取CRT定義的虛擬DllMain(基本上關閉每個線程的初始化並報告成功)。