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 中運行了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM