首页 > 解决方案 > .xll 加载项在没有安装 Visual Studio 完整版的情况下无法工作

问题描述

我制作了一个 Excel 插件(.xll 文件),带有一些数学函数,用 C++ 编译,它在我的计算机上正常工作。好吧,当我尝试发送给其他人时,它不起作用。Excel 显示文件已损坏的消息,当我们尝试打开它时,打开一个带有一些代码/单词/符号的工作表

我试图找到解决方案,但无济于事。但我发现了真正的问题。在这台机器上安装 Visual Studio(完整版)后无法正常工作,xll 插件工作!

所以,我想我有一个程序、功能、组件,与使程序运行的 Visual Studio(完整版)一起安装。我尝试了 SDK,但没有成功。请问你能帮帮我吗?我附上了 3 张图片,一张带有插件工作,2 张带有错误。

PS:我尝试为两个 excels 编译 32 位和 x64 版本,并且发生在两个 excels 中(32 位和 64 位)

错误 1

错误 2

在职的

一位同事要求我更新 -dumpbin /dependents Addin.xll 的结果如下:

文件类型:DLL

图像具有以下依赖项:

KERNEL32.dll
USER32.dll
MSVCP140D.dll
VCRUNTIME140_1D.dll
VCRUNTIME140D.dll
ucrtbased.dll

概括

    1000 .00cfg
    3000 .data
    4000 .idata
    1000 .msvcjmc
    A000 .pdata
   29000 .rdata
    2000 .reloc
    1000 .rsrc
   70000 .text
   32000 .textbss
    1000 .tls

标签: visual-c++excel-addins

解决方案


1)确保您发送给其他人的是发布版本,而不是调试版本。

2)尚未安装 VC++ 运行时的用户将需要从最新支持的 Visual C++ 下载页面安装适当的 x86(32 位)或 x64(64 位)可再发行组件(其中位数取决于 x86 与您发送给他们的 XLL 的 x64 版本,而不是他们的 Windows 安装的位数)。

MSVCP140D.dll
VCRUNTIME140_1D.dll
VCRUNTIME140D.dll
ucrtbased.dll

这些 DLL 名称中的'D'后缀代表“调试”。这些是调试C/C++ 运行时 DLL,由 Configuration = Debug 构建使用,并作为 Visual Studio 安装程序的一部分安装。根据确定要重新分发的 DLL ,它们将在开发期间使用,但不会以其他方式部署:

应用程序的调试版本和各种 Visual C++ 调试 DLL 不可再分发。


推荐阅读