在 Visual Studio 2019 上使用 XLCALL32.LIB 时出现 LNK2019 错误

问题描述

我正在使用一个旧的 C++ 库,它利用了一个外部 XLCALL32.LIB 库文件。这个外部库已经很多年没有更新了。

XLCALL.H 头文件中的注释如下: /* ** Microsoft Excel 开发人员工具包 ** 5.0 版 */

我使用 VS 2019 进行调试 x64 构建,我的链接错误如下:

错误 LNK2019:无法解析的外部符号 Excel4 在函数 xxxxx 中引用 错误 LNK2019:无法解析的外部符号 Excel4v 在函数 xlAutoOpen 中引用

调试 Win32 构建成功,但在 Excel 中加载 XLL 文件时出现以下奇怪错误

“无法初始化电缆订单数据。缺少静态数据”

我使用的是适用于 Office 365 32 位的 Microsoft Excel。

我无法在线找到有关此错误的任何帮助,因此我正在尝试 x64 构建,但遇到上述链接错误

有人可以建议我是否应该进行 32 位构建,以及 Microsoft 是否有我应该使用的更新的 XLCALL32.lib。

非常感谢您的帮助!

解决方法

您不能在 64 位版本中使用 32 位 DLL 或导入库 (LIB)。所以,是的,如果您计划使用此 LIB,您必须进行 32 位构建。无论如何,您还需要进行 32 位构建,因为您的目标是 32 位版本的 Office。

此外,由于这个 LIB 肯定是使用旧版本的编译器构建的,因此您会看到错误也就不足为奇了。 LIB 文件不保持跨编译器版本的二进制兼容性。 (并且尤其不在编译器的主要版本中。)

我建议获取此库的更新版本。文档是 here。它应该随 Microsoft Office SDK 一起提供。下载与您的 C++ 代码所针对的 Office 版本号匹配的正确 SDK。