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

Visual Studio 2019中跨C++项目调用文件遇LNK2019链接错误的解决方法(不导入源文件)

解决Visual Studio 2019中C++项目引用的LNK2019链接错误

这个LNK2019错误其实很好解决——问题出在你把Game项目设置成了生成可执行文件(.exe),而VS里的可执行项目是没办法被另一个可执行项目直接链接引用的,链接器根本没法从exe里提取你需要的类方法实现。咱们不用把Game的源文件复制到Tester里,只要调整Game项目的输出类型就行,给你两种方案:

方案1:转成静态库(最省心的选择)

  • 在解决方案资源管理器里右键Game项目,打开属性面板
  • 左侧导航到「配置属性 → 常规」
  • 找到「项目默认值」下的「配置类型」,把下拉框从「应用程序(.exe)」改成「静态库(.lib)」
  • 点「确定」保存,然后右键整个解决方案选「重新生成解决方案」

改完之后,Game会生成一个.lib静态库文件,Tester项目因为已经添加了Game的引用,链接器会自动找到这个库并把里面的符号(也就是Foo、Foo2的方法实现)链接进去,LNK2019错误就消失了。

方案2:转成动态库(适合需要动态加载的场景)

如果之后你需要动态加载Game的代码,就选动态库:

  • 同样右键Game项目打开属性,把配置类型改成「动态库(.dll)」
  • 额外要做的是给Game的类加导出声明,不然外部项目找不到它的符号:在Foo.h和Foo2.h的类声明前加上__declspec(dllexport),比如:
    class __declspec(dllexport) Foo {
        // 你的类成员和方法
    };
    
    class __declspec(dllexport) Foo2 {
        // 你的类成员和方法
    };
    
  • 重新生成解决方案,Tester就能正常链接Game的动态库了。

最后再确认下Tester的引用设置没问题:

  • 右键Tester项目 → 「项目依赖」,确保勾选了Game
  • 右键Tester项目 → 「添加 → 引用」,确认已经加了Game的引用

这样就完全不用导入Game的源文件,Tester就能用Game里的所有类和方法啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:02:39