C++ Excel Add-in loading error: XLL file is loaded by Excel as text file

C++ Excel Add-in loading error: XLL file is loaded by Excel as text file

我正在为 Excel 构建 XLL 加载项,使用 C++ 和 XLW library

它在我的电脑和许多其他电脑上运行良好。但在某些情况下,当我将 XLL 拖入新的 Excel window 时,会出现此错误:

The file you are trying to open, 'my_addin.xll', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

如果单击 yes,则 Excel 将以文本文件形式打开 XLL,显示如下内容:

MZÿÿ¸@ Í!¸LÍ!This program cannot be run in DOS mode.

就在第一行。预计不会发生这种情况。这可能是什么原因?

这是所有机器的系统配置:

总而言之,错误代码 This program cannot be run in DOS mode. 通常与以下问题之一有关:

  1. XLL 是使用 /MD 标志构建的,但最终用户没有所需的 CRT DLL。

  2. XLL编译平台错误;例如平台 x64 用于构建您的 XLL,然后以 32 位 Excel 加载它(反之亦然)。

  3. 缺少外部 DLL 依赖项。

  4. 存在一个使用 /MD 标志构建的外部 DLL 依赖项(运行-time 库的多线程特定和 DLL 特定版本)。在这种情况下,如果最终用户拥有正确版本的 CRT(已用于构建外部 DLL 的版本),则没有问题。否则,强烈建议使用 /MT 标志(多线程,运行-time 库的静态版本)重建外部 DLL(如果可能)。甚至更好的是,将其静态 link 到您的 XLL(使用静态 .lib 文件作为第三方组件构建的输出)。

我相信最后一个可能是你的情况。