3

我正在使用 C++ 和XLW library为 Excel 构建 XLL 插件。

它在我的 PC 和许多其他 PC 上运行良好。但在某些情况下,当我将 XLL 拖到新的 Excel 窗口中时,会出现以下错误:

您尝试打开的文件“my_addin.xll”的格式与文件扩展名指定的格式不同。在打开文件之前,请确认文件没有损坏并且来自受信任的来源。您现在要打开文件吗?

如果单击yes,则 Excel 会将 XLL 作为文本文件打开,显示如下:

MZÿÿ¸@ Í!¸LÍ!这个程序不能在 DOS 模式下运行。

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

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

  • Microsoft Windows 7 Professional 64 位(操作系统)
  • 微软 Excel 2010 32 位
4

1 回答 1

2

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

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

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

  3. 缺少外部 DLL 依赖项。

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

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

于 2017-09-05T13:34:07.387 回答