解决VS编译错误“无法解析的外部符号”

        我们遇到的大多数问题都很常见,按步骤检查就可以解决。遇到一些奇怪的BUG,保持良好的心态尤为重要。

        介绍一下解决方案:TestWindowDlg(为启动项exe)、BaseDLL(类库),BaseDLL有函数MyFunction()。生成程序遇到报错提示"无法解析的外部符号MyFunction..."。

一、解决步骤:

1、检查MyFunction,是否仅声明未实现——着重检查参数和返回值是否与声明一致

检查静态链接库/动态链接库附加依赖,3、4、5步有一种设置正确即可。

2、检查库目录(两处有一个配置就可以)

2.1 项目右键属性->配置属性->VC++目录->库目录。

2.2 项目右键属性->配置属性->链接器->常规->附加库目录。

3、代码中import "BaseDLL.lib"。

4、项目右键属性->配置属性->链接器->输入->附加依赖项。(是否缺少BaseDLL.lib)

5、项目->引用。

二、解决方案包另外两个项目(A、B)依赖BaseDLL,还可能是:

        VS未检测到cpp文件的修改导致未编译,对该cpp文件单独ctrl+F7一下。

        A.dll或B.dll未重新生成,先把A、B项目重新生成一下。

三、TestWindowDlg编译提示MyFunction __declspec(dllexport)。

        原因是BaseDLL中对MyFunction的导入导出宏有问题,对于TestWindowDlg应该是__declspec(dllimport)。可以在BaseDLL添加一个include_basedll.h。

#ifdef _BUILD_IN_BaseDLL
#ifndef EXT_CLASS_BaseDLL
#define EXT_CLASS_BaseDLL		AFX_CLASS_EXPORT
#endif
#else
#ifndef EXT_CLASS_BaseDLL
#define EXT_CLASS_BaseDLL		AFX_CLASS_IMPORT
#endif
#endif
        在pch.h或项目属性“预处理器定义”中定义_BUILD_IN_BaseDLL。

四、其它软件引发:

        Incredibuild的BUG,新版本奇怪问题越来越多。

        360杀毒把文件给杀了,请手动把解决方案目录添加到信任区,该恢复的恢复。

        加密软件(如果你们用到了)把lib给加密了😂。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值