admin管理员组

文章数量:1568418

旧项目是在Windows7x86/VS2008环境下使用makefile进行编译的纯C项目。

这次要求升级为Windows10环境编译

编译环境有几个关键点,分开组合,进行了调查

1.Windows10 VS2019(Framework4.7.2 这个升级了)

        在这个环境下,是找不到Win32.Mak文件的

        我想的办法是将旧系统中的文件拷贝到工程目录,然后进行引用

        Win7下的Win32.Mak文件路径:

                C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\Win32.Mak

        将mak文件的头进行修改

                !include <./Win32.Mak>

                直接使用当前路径下的Win32.Mak文件

        结果:编译打包为DLL,相同数据,运算结果与旧项目不一致,怀疑是因为Framework升级后导致,可以能是因为系统有差异,导致运算位数改变

2.因为怀疑是Framework的问题,所以这次使用Windows10+VS2008+Framework3.5

        Windows10更新Framework3.5有很多方法,可以自行baidu,我是直接用手机给笔记本开热点,然后进行WindowsUpdate,也挺快的,手机网络比公司的网络给力多了。

        此时你会发现,安装Framework3.5之后,Windows10中也会安装SDKv6.0A

        然后其实旧项目可以直接进行编译。

        结果:运算结果与旧项目一致。

结论,有一些代码中使用了WindowsAPI,这些WindowsAPI是基于WindowsSDK的,如果直接升级编译环境(WindowsSDK),而不修改对应的WindowsAPI函数,那么有可能会出现内存运算不一致,或者出现内存异常。

最后因为客户并没有给我们升级的钱。。就没有给他升级SDK,仍然使用了Framework3.5。。

本文标签: MakefileMAK