You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将32位XLL Excel插件迁移至64位时遭遇LNK1561入口点定义错误

解决x64 Excel XLL编译LNK1561入口点错误的思路

针对你切换x64平台后出现的LNK1561错误,本质是链接器找不到Excel XLL要求的正确入口点,以下是具体排查和解决步骤:

  • 检查x64配置的入口点与子系统设置
    右键项目→属性→链接器→高级,确认入口点是否设置为xlAutoOpen(Excel XLL的标准入口,注意大小写),Win32配置的这个设置可能没同步到x64。同时到链接器→系统,确认子系统是Windows (/SUBSYSTEM:WINDOWS)——XLL本质是DLL,若子系统设为控制台,会强制要求默认入口(如main),导致报错。

  • 替换为x64版本的Excel依赖库
    原Win32的附加库目录是32位Office SDK库,x64必须对应替换成64位版本:

    1. 确认附加库目录里的路径指向64位Excel SDK的lib文件夹;
    2. 到链接器→输入→附加依赖项,把32位的xlcall32.lib替换为64位的xlcall64.lib,如果还有其他依赖库,也要同步换成x64版本。依赖库不匹配会导致链接器无法识别XLL的入口符号,间接触发LNK1561。
  • 验证x64项目的编译与配置类型

    1. 检查常规→项目默认值→配置类型是否为动态库(.dll)——XLL是特殊的DLL,若配置类型被误改为控制台或应用程序,会要求默认入口点;
    2. 到C/C++→高级,确认编译为是编译为C代码(/TC),如果x64配置不小心改成C++编译,且入口函数没加extern "C"修饰,函数名会被 mangling,链接器找不到正确的入口。
  • 确认入口函数的定义符合x64规范
    确保xlAutoOpen等入口函数的签名正确,x64下必须用__stdcall调用约定并导出:

    __declspec(dllexport) int __stdcall xlAutoOpen(void) {
        // 初始化逻辑
        return 1;
    }
    

    同时检查代码里的条件编译,比如有没有#ifdef _WIN32这类宏导致x64下(定义了_WIN64)跳过入口函数的编译,必要时调整宏定义。

  • 清理残留文件后重新生成
    切换平台后残留的32位中间文件可能干扰编译:执行生成→清理解决方案,手动删除项目目录下的x64输出文件夹,再重新生成x64配置。

内容的提问来源于stack exchange,提问作者Valarenti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:25:04