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

如何修复同一解决方案下不同项目中的链接错误(LNK2019)

解决LNK2019:在Project2中调用Project1的foo()函数(不复制代码/使用DLL)
  • 修改Project1的输出类型
    控制台程序默认生成.exe,但链接需要静态库文件。右键Project1 → 属性 → 配置属性 → 常规 → 配置类型,选择「静态库(.lib)」,重新编译Project1生成对应的.lib文件。

  • 处理函数的名字修饰问题
    如果是C项目,C编译器会对函数名进行名字修饰(mangling),导致链接时找不到匹配的符号。在functions.h中用extern "C"包裹函数声明,统一符号规则:

    #ifdef __cplusplus
    extern "C" {
    #endif
    
    void foo();
    
    #ifdef __cplusplus
    }
    #endif
    

    同时确保Project1和Project2的调用约定一致(比如都默认用__cdecl,避免一方加了__stdcall而另一方没加)。

  • 验证Project2的链接配置
    右键Project2 → 属性 → 配置属性 → 链接器 → 输入,检查「附加依赖项」是否自动添加了Project1生成的.lib文件路径;如果没有,手动补充该路径。另外必须保证两个项目的编译平台一致(比如同为x86或x64),平台不匹配会直接导致链接失败。

  • 确认项目编译顺序
    右键解决方案 → 项目依赖,勾选Project2依赖于Project1,确保编译时先生成Project1的静态库,再编译Project2,避免因依赖库未生成导致的链接错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:50:45