C++ Excel 加载项加载错误 : XLL file is loaded by Excel as text file

标签 c++ excel xll xlw

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

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

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.

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

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

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

最佳答案

总而言之,错误代码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 文件作为第三方组件构建的输出)。

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

关于C++ Excel 加载项加载错误 : XLL file is loaded by Excel as text file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46046362/

相关文章:

c++ - C++中解析文本文件的例程

c++ - delete p where p is a pointer to array always a memory leak?

mysql - 报告所有可能的列组合

c++ - 在未安装 visual 的计算机上设置 xll

c++ - 结构取消引用运算符 (->) 与数组下标运算符 ([]) 的语法

c++ - Vector<元组>, make_tuple<int, ignore, float>

arrays - 在循环中使用数组

excel - 我想从网页中提取数据,但最后我无法在工作表中写入数据。数据是表格形式(多行,列)?

excel - 我可以从启用所有宏的 .cmd 脚本运行 Excel 吗?

python - python调用xll函数