zoukankan      html  css  js  c++  java
  • VS 2019 编译的程序在 xp 下运行

    dll 绑定:将 DLL 文件写入导入表,并不是集成进去

    增量链接:在各个函数之间留下 Padding(0xCC),增加小规模代码的情况下不会整个重新编译。但开启这个选项会增加一个 ILT表(Incremental Linking Table)。

    MultiThread(static link) MT            libcmt.lib
    Debug multiThread(static link) MTd            libcmtd.lib
    MultiThread(dynamic link) MD            msvert.lib
    Debug multiThread(dynamic link) MDd        msvertd.lib

    // NoSEH.cpp : Defines the entry point for the console application.
    //
    /*-----------------------------------------------------------------------
    第8章  Windows下的异常处理
    《加密与解密(第四版)》
    (c)  看雪学院 www.kanxue.com 2000-2018
    -----------------------------------------------------------------------*/
    #include "stdafx.h"
    #pragma comment(linker,"/Entry:main")
    #pragma comment(linker,"/subsystem:windows")
    
    #pragma comment(linker,"/entry:main")
    
    // 需要手动添加这三个库文件,网上说在 代码生成 -> 运行库 中选择的就是
    // 但经过测试,发现都不行,手动添加反而可以
    #pragma comment(lib, "msvcrtd.lib")
    #pragma comment(lib, "vcruntimed.lib")
    #pragma comment(lib, "ucrtd.lib")
    
    __declspec(naked) void main(void)
    {
                //不能添加 printf 函数,添加了就不能在 XP 程序中运行了 __asm { mov dword ptr fs:[
    0],-1 xor eax,eax mov [eax],5 //向0地址写入数据,引发内存访问异常 retn } }

    这个程序的编译(Release版本)关闭了一系列可能在 XP 中不能实现的选项,并使用运行库 MTD/MT。然后将程序扔进 XP,就能在 XP 中运行了。

  • 相关阅读:
    Redis持久化
    《Hadoop权威指南·大数据的存储与分析》阅读笔记(未读完)
    《redis设计与实现》第一版 阅读笔记(未看完)
    LSMTree -> SStable 初体验
    Goland实现Set操作
    使用Goland操作Redis详解
    使用Python操作Redis详解
    学习笔记
    docker技术入门与实战 第三版
    Shell(笔记)
  • 原文地址:https://www.cnblogs.com/Rev-omi/p/13940562.html
Copyright © 2011-2022 走看看