[问题] 让vs编译出来的MFC视窗程式也可以在Windows XP下执行

楼主: red0whale (red whale)   2016-10-13 17:09:40
开发平台(Platform): (Ex: Win10, Linux, ...) Win10
编译器、IDE:Visual Studio 2015
问题(Question):
 各位好
 我想让VS编译出来的MFC视窗程式也可以在Windows XP下执行
 如果我以默认的方式编译出一个MFC视窗程式
 拿去XP下执行会跳出一个方框:“不是正确的win32”
 于是我上网找了一下解法
 只要在专案上按一下右键,
 点选属性,
 并找到“链接器->系统->最低版本”键入“5.01”
 就可以解决(?)
 我是参考这个的:http://bbs.csdn.net/topics/390639155
 结果还是没成功,
 反而出现了另一个方框:“无法找到程序输入点 InitializeCriticalSectionEx (在动态连结程式库 kernel32.dll)
 这该怎么解决?
 问题好像越来越复杂了…
预期的正确结果(Expected Output): 在Windows XP下可以正常开启并执行
错误结果(Wrong Output):
无法找到程序输入点 InitializeCriticalSectionEx (在动态连结程式库 kernel32.dll)
补充说明(Supplement):
作者: Schottky (顺风相送)   2016-10-13 17:14:00
最简单的方法是:在虚拟机器里装 XP 和 compiler然后在里面编译https://goo.gl/Hu76ja (MSDN连结) 这页看一下你既然想在XP上面跑就得配合删掉一些XP上不存在的东西像 InitializeCriticalSectionEx() 函式就是一个例子https://goo.gl/JZLVKE (MSDN连结) 这一页也看一下我只用过 VS2012 没用过 VS2015,没办法帮你试不过原则上就是照 MSDN 说的应该可以那个函数应该是在 MFC library 里面的目标机器设定正确时应该不会再使用到那个函式才对此外我有点好奇,你为什么刚学就要碰这么麻烦的相容问题出现未定义那表示 XP 没有这些东西所以你要照我的第一个连结 define 那些东西header 里面才会把不该出现的部份排除通常 MFC 专案是把定义写在 stdafx.h 里面即可要写在所有的 #include 前面才会生效忘了说改完 define 要清除整个专案重新编译 @@
作者: ilikekotomi (Young)   2016-10-14 01:53:00
有问题的解法希望可以不吝分享
作者: TobyH4cker (Toby (我要当好人))   2016-10-15 04:46:00
3
作者: EdisonX (卡卡兽)   2016-10-16 00:05:00
非得用 VS2015 的 compiler 吗 ? 若还要相容 XP 的话 ,我比较建议在 VS2015 下,设定以 2010 方式做 compile( 这点是办得到的唷 , 2015 就真的只变 IDE 而已了 )

Links booklink

Contact Us: admin [ a t ] ucptt.com