3

我有一段 C++ 代码,它创建了一个 XLL(Excel 插件)。它可以通过Excel成功加载,并且可以完美运行。

然后,我切换到 64 位 Excel,代码停止工作。因此,我使用 x64 平台设置重新编译了 Visual Studio 中的代码。编译没有错误。

现在,当我尝试在 64 位 Excel 中加载它时,Excel 无法识别文件扩展名:

在此处输入图像描述

它抱怨显示“'MyAddin.xll' 的文件格式和扩展名不匹配。”,并为我提供以下选项以继续:yes、、nocancel

如果我忽略该消息并按yes,则加载项崩溃,并且我收到错误消息:

该程序不能在 DOS 模式下运行。

由于加载项编译正确,我不确定如何解决此错误。我的问题是:任何人都可以给我任何关于如何克服这个问题的指示吗?

我的要求是:

  1. 64 位 Excel 必须将我的 XLL 识别为有效的加载项(第一条错误消息必须消失)

  2. 第二个错误是什么意思?

4

3 回答 3

1

该消息通常意味着运行时链接器找不到 dll。使用 sysinternals 中的depends.exe(64 位)找出哪个。您可以忽略 xlcall32.dll 和 ieshims.dll 警告。

于 2012-10-09T22:52:22.700 回答
1

你用32位版本的Excel打开64位插件,会报只能在DOS下打开的错误。需要安装64位(一般无法安装32位和64位)office才能打开64位插件!

于 2017-11-16T08:36:59.637 回答
0

正如 Keith 所提到的,这个错误很可能是因为没有找到某些 .dll 依赖项。可能出现的一个具体问题是,如果您的 .xll 正在调用位于同一目录中的另一个 .dll。当 Excel 启动并加载 .xll 时,它将搜索其工作目录并且无法找到 .dll。

解决此问题的一种方法是将 .dll 的目录添加到您的路径中。

于 2013-12-10T06:48:58.003 回答