visual-c++ - .xll 加载项在没有安装 Visual Studio 完整版的情况下无法工作
问题描述
- 更新*
我制作了一个 Excel 插件(.xll 文件),带有一些数学函数,用 C++ 编译,它在我的计算机上正常工作。好吧,当我尝试发送给其他人时,它不起作用。Excel 显示文件已损坏的消息,当我们尝试打开它时,打开一个带有一些代码/单词/符号的工作表
我试图找到解决方案,但无济于事。但我发现了真正的问题。在这台机器上安装 Visual Studio(完整版)后无法正常工作,xll 插件工作!
所以,我想我有一个程序、功能、组件,与使程序运行的 Visual Studio(完整版)一起安装。我尝试了 SDK,但没有成功。请问你能帮帮我吗?我附上了 3 张图片,一张带有插件工作,2 张带有错误。
PS:我尝试为两个 excels 编译 32 位和 x64 版本,并且发生在两个 excels 中(32 位和 64 位)
一位同事要求我更新 -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
解决方案
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 不可再分发。
推荐阅读
- mongodb - 是否可以对聚合管道中的每个文档应用不同的聚合投影?
- javascript - Plotly.js multiple subplots not working as expected
- java - 使用@JsonFormat时,带有继承和对象列表的json中的无效对象序列化
- windows - “make(e=2):系统找不到指定的文件”当我运行“make all”命令时
- angular - 一次加载重复的主服务
- kubernetes - Kubernetes 中 Pod 之间的通信。服务对象还是集群网络?
- python - AttributeError: 'list' 对象没有属性 'groupby'
- matlab - 下面的matlab符号是什么意思?
- javascript - 用 requestAnimationFrame() 替换 setTimeout()
- python-3.x - 带有 kwargs 的递归函数