qq_28631871 2024-05-26 20:55 采纳率: 0%
浏览 35

c++ 构造函数 无法解析的外部符号问题,如何解决?

我这是哪里出错了 求帮帮忙,为什么 B.cpp中一旦实现 构造函数就会报错? 把构造函数删了就正常可以正常运行。
B.h

class B {
public:
    B() ; // 声明构造函数
private:
};

B.cpp

#include "B.h" // 包含B类的头文件,注意路径
B::B() {
    // 构造函数的实现
}

​A.cpp

#include "B/B.h" // 包含B类的头文件,注意路径
int main() {
    B bObject;// 创建B
    return 0;
}

img

​​

img

img

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-05-26 21:23
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据您提供的代码和截图信息,问题出在B类的构造函数的实现上。错误信息“无法解析的外部符号'public:_cdecl B:B(void)',函数main中引用了该符号”表明链接器在链接过程中找不到B类构造函数的定义。这通常是因为编译器没有正确地将B.cpp文件编译进最终的可执行文件中,或者构造函数的定义没有被正确导出。

    以下是一些可能的解决方案:

    1. 确保B.cpp被编译

      • 检查项目设置,确保B.cpp文件被包含在编译过程中。
      • 如果您使用的是Visual Studio,可以在“解决方案资源管理器”中右键点击B.cpp文件,选择“包含在项目中”(Include In Project)。
    2. 检查项目配置

      • 确保B.cpp和A.cpp在同一个项目中,或者B.cpp在库项目中,而A.cpp在应用程序项目中,并且正确设置了项目依赖。
    3. 检查头文件包含路径

      • 您在A.cpp中包含B.h的路径是#include "B/B.h",这假设B.h位于B目录下。请确保这个路径是正确的,并且B目录相对于A.cpp的位置是正确的。
    4. 检查B.cpp中的构造函数定义

      • 您的B.cpp文件中的构造函数定义似乎没有问题,但是请确保没有其他的语法错误或遗漏。
    5. 重新生成项目

      • 清理项目(Clean)并重新生成(Rebuild)以确保所有文件都被重新编译。
    6. 检查链接器设置

      • 如果您在多个项目中工作,确保链接器设置正确,没有遗漏B.cpp编译生成的对象文件。
    7. 检查命名空间问题

      • 如果B类在某个命名空间中定义,请确保在B.h和B.cpp中都使用了相同的命名空间。

    如果以上步骤都无法解决问题,您可能需要提供更多的项目配置信息,或者尝试在不同的开发环境中重现问题。

    至于参考资料,您可以查看C++的官方文档,或者搜索相关的在线教程和论坛讨论,例如Stack Overflow上的相关问题。这些资源通常会提供更详细的解决方案和最佳实践。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月26日

悬赏问题

  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题