我正在使用 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.
通常与以下问题之一有关:
XLL 是使用
/MD
标志构建的,但最终用户没有所需的 CRT DLL。XLL 是用错误的平台编译的;例如平台
x64
用于构建您的 XLL,然后将其加载到 32 位 Excel 中(或反之亦然)。缺少外部 DLL 依赖项。
有一个使用
/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/