前面五天把四个前提逐个攻破了。今天把它们拼成一条真正能跑的热替换流程。先说一个最现实的问题:正在运行的 dll 文件是被操作系统锁定的,你覆盖不了它。你想"更新一下 importer_csv",直接copy new.dll importer_csv.dll——Windows 会告诉你"另一个程序正在使用此文件"。所以"原地替换"这条路从一开始就行不通。得绕。第一步:影子拷贝加载时,不加载插件目录里那份"源文件",而是先把它拷贝到一个带版本/时间戳的临时路径,加载那份拷贝:QStringHostApp::shadowLoad(constQStringpluginPath,QString*err