我用VS2015举例
VS2015使用的是V140的平台工具集,直接使用这个编译的话编译出来的的东西在XP上是无法使用的
只有改用V140XP的版本才能使用,这基本就解决了大部分的问题但是有的时候还是有问题例如
你编写一个DLL在XP下使用但是你的DLL中使用了一些静态变量或者全局变量那么加载的时候会出现问题
大多数会提示 内存位置访问无效
如果你使用OCX在调用DLL的话注册的时候也会提示内存位置无效这个主要是由于如下问题引起的
这是由于2015的“线程安全变量初始化”特性导致的,此特性为c++11所要求,从vs2015update2开始引入,此特性不支持xp
如果dll中使用了全局变量、静态变量等都有可能在xp上触发这个问题
解决方案:
关闭这个特性
在编译命令行中追加选项:
/Zc:threadSafeInit-