shldisp.h的三个函数改名,搞错了,该注意预处理器宏
CascadeWindows->CascadWindows,4464行
ShellExecute->ShllExecute,4827行,
Windows =>Widows,5117行,
取名字取成Windows这种特殊名字,不冲突才怪.
主要就是我的预处理里面的宏有问题:所以编译不成功.
_WINDOWS;Win32;_Windows;_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions)
这几个宏是默认所有都有的.而开始的时候.预处理器定义成这个样儿:WINDOWS;Win32;Windows;所以窗口就与人家的命名空间/函数指针的窗口冲突了,所以要改成_版本的窗口.
然后后面的编译不过,也是这个原因.因为后面的要编译成控制台程序,而你这表明的是 窗口程序.而在win32.user.cpp是默认都有的.所以你就覆盖了人家的控制台选项.所以编译不过.因为user这张表是所有都有的.所以编译不过的,把预定义宏给隐藏掉.就可以编译通过了.
看来,预定义宏很重要.以后一定要千万小心!如果出现什么语法问题的报错,很有可能是预定义宏搞冲突了.所以人家才说语法有问题,有问题,这是在给你说宏覆盖了,宏覆盖了.
如人家在报说找不到_main程序,其实人家是在说控制台/窗口两个选项冲突了.本来别人默认的控制台是没问题的.但你的user.cpp那个覆盖了.因而,vs认为你这是窗口程序,人家去找winmain,结果找不到,然后他说main找不到.所以,外国人的东西,都很折腾人.
浙公网安备 33010602011771号