对COM组件的调用返回错误 HRESULT E_FAIL
方法1 网上的加载DLL到缓存,我通过GPT写了个批处理
1.bat 放到 Common7\IDE\PublicAssemblies 下
2. 添加环境变量 Path
按这个,DLL加入了缓存 但是 VS创建MFC项目还是失败
方法2:项目创建失败了,其实这个项目已经创建出来了。
A.找到 项目所在的文件夹
B.删除
C.然后VS打开
d.项目就能正常使用了
如果类向导添加内容失败 也是这样搞 删除.vs文件夹 重新打开项目 就搞定
BAT代码
@echo off
:: Batch file to install a DLL into the GAC with admin rights check:: 切换到批处理所在目录
cd /d "%~dp0":: 检查是否是以管理员身份运行
net session >nul 2>&1
if %ERRORLEVEL% NEQ 0 (echo 请求管理员权限...goto UACPrompt
):Continue
cls
echo 正在尝试将 DLL 安装到 GAC...:: 设置 DLL 文件名
set "DLL_NAME=Microsoft.VisualStudio.Shell.Interop.11.0.dll":: 检查当前目录是否存在目标 DLL
if not exist "%DLL_NAME%" (echo 错误:找不到文件 "%DLL_NAME%"echo 请确保该 DLL 文件与本脚本位于同一目录。echo 当前工作目录: "%CD%"pauseexit /b 1
):: 开始安装
echo.
echo 正在安装 %DLL_NAME% 到 GAC...gacutil -i "%DLL_NAME%":: 判断是否成功
if %ERRORLEVEL% == 0 (echo.echo 安装成功!
) else (echo.echo 安装失败,请检查:echo 1. 是否有管理员权限echo 2. gacutil 是否已正确安装(通常随 Visual Studio 安装)echo 3. 程序集是否具有强名称(Strong Name)
)pause
exit /b 0::::::::::::::::::::::::::::::::::::::::::
:: 部分:请求管理员权限重新启动自己
:::::::::::::::::::::::::::::::::::::::::::UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
echo WScript.Quit >> "%temp%\getadmin.vbs""%temp%\getadmin.vbs"
del /f /q "%temp%\getadmin.vbs" >nul 2>&1
exit