2013-04-18 71 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(基本上关闭每个线程的初始化并报告成功)。