如何在C++中链接头文件

2023-12-22

我是使用头文件进行 C++ 编程的新手。这是我当前的代码:

//a.h
#ifndef a_H
#define a_H
namespace hello
{
  class A
  {
    int a;
    public:
      void setA(int x);
      int getA();
  };
} 
#endif

//a.cpp
#include "a.h"
namespace hello
{
   A::setA(int x)
  {
    a=x;
  }
  int A::getA()
  {
    return a;
  }
}

//ex2.cpp
#include "a.h"
#include<iostream>
using namespace std;

namespace hello
{
  A* a1;
}
using namespace hello;
int main()
{
  a1=new A();
  a1->setA(10);
  cout<<a1->getA();
  return 1;  
}

当我尝试编译它时g++ ex2.cpp,我收到此错误:

In function `main':
ex2.cpp:(.text+0x33): undefined reference to `hello::A::setA(int)'
ex2.cpp:(.text+0x40): undefined reference to `hello::A::getA()'
collect2: ld returned 1 exit status

为什么它不起作用,我该如何修复它?


您不链接头文件。你链接目标文件,它们是通过编译创建的.cpp文件。您需要编译所有源文件并将生成的目标文件传递给链接器。

从错误消息看来您正在使用 GCC。如果是这样,我想你可以做
g++ ex2.cpp a.cpp
让它编译两者.cpp文件并使用生成的目标文件调用链接器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在C++中链接头文件 的相关文章

  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • driver.manage.wait(long timeout) 和显式等待之间的区别

    谁能说出以下的区别 driver manage wait long timeout and WebDriverWait wait new WebDriverWait driver WAIT IN SECONDS 明确等待 了解我未来的参考
  • 匹配 uuid.uuid4().hex 生成的值的正确正则表达式是什么?

    如何验证某个值是否等于此代码生成的 UUID4 uuid uuid4 hex 它应该是一些正则表达式吗 由以下形式的 32 个字符长的字符串生成的值 60e3bcbff6c1464b8aed5be0fce86052 据我所知 Martijn
  • 创建资源文件以在 Qt Designer 中使用它

    我想向小部件添加背景图像 因此我需要一个资源文件 但我无法在 Qt Designer 中创建它 这是我所做的 从小部件中 我进入资源浏览器并单击 添加新文件 按钮 然后弹出一个新窗口 系统要求我指向 qrc 文件 但该文件不存在 而且我不知
  • Swift 元组到可选赋值

    我正在用 Swift 编写一些代码来学习该语言 这是我的基类 import Foundation class BaseCommand NSOperation var status Int nil var message String nil
  • 截断字符串,但删除字符串的中间而不是结尾

    我想出了这个函数 它将给定的字符串截断为给定的单词数或给定的字符数 以较短者为准 然后 在截掉字符数或字数限制之后的所有内容后 它会在字符串中附加一个 如何从字符串中间删除字符 单词并将其替换为 而不是用 替换末尾的字符 单词 这是我的代码
  • 自动滚动不适用于 vbox 布局

    我需要将表单面板居中对齐 所以我使用了vbox布局 使用后自动滚动不再像以前那样工作 代码如下 Usr VWPanel Ext extend Ext Panel id null rid null closable true autoScro
  • 无法访问类 jdk.xml.internal.JdkXmlUtils

    我正在更新 hybris SAP Commerce 2005 的旧公司实习生扩展 它是使用 API 的扩展 我不知道这个扩展有多少年了 然而 当将它应用到java 11时 我发现了这样的问题 Java 11 导入 javax xml ws
  • 编写 Jena 内置函数

    我正在尝试写一个耶拿内置 http jena apache org documentation inference RULEbuiltins从给定的算法返回一个值 然后与该值进行比较 例如 String rule exRule d rdf
  • 最好的 Python Cassandra 库/包装器? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 I found lazyboy https github com digg lazyboy and pycassa https github c
  • 需要密码才能禁用 Android 设备管理员

    我正在考虑一个具有设备管理员权限的安全应用程序 我想看看当用户尝试在 设置 gt 安全 gt 设备管理员 下以管理员身份取消选中该应用程序时 是否可能需要密码 这将增加一个障碍 不允许用户轻易卸载应用程序 因为他们首先需要从应用程序中删除管
  • PHP-解码 JSON

    我有以下脚本从 API 获取搜索结果 然后对数组进行切片并转储它 我在将 JSON 解码为数组时遇到问题 它返回Array 0 这是一个 WordPress 简码 以下是从 api 获取的 Json 示例 barcode 000015426
  • Java:如何获取xml节点路径

    我有以下 xml
  • 我如何知道 UdpClient 是否已关闭/处置?

    我通过通常的异步回调从 UdpClient 接收数据 private void OnUdpData IAsyncResult result byte data udpReceive EndReceive result ref receive
  • 将一个类的所有对象放入一个列表中

    我有一个 C 类 称为 C 当我执行该程序时 我创建该类的新对象 在某些时候 我需要创建一个列表List
  • 如何将 Ruby 数组从 Heroku 控制台导出为 CSV?

    我希望将数组从 heroku 控制台导出到本地 CSV 文件中 在我目前的情况下 我每天都有一个 rake 任务 它寻找谈论我的应用程序的推文 我想分析这些推文 看看它们是什么时间出现的 等等 heroku run console twee
  • 录制视频时的音频音量

    因此 经过大量搜索后 我找到了允许在录制视频的同时播放背景音频的代码块 我已将所述代码块粘贴在下面 fileprivate func setBackgroundAudioPreference guard allowBackgroundAud
  • 枚举内的枚举

    我想在 java 中的 sql 查询的枚举中创建一个枚举 比如我想说table create它会返回 CREATE TABLE 或database create它会返回创建数据库 我怎样才能做到这一点 enum SQL table ALTE
  • 未找到 Phonegap 3.0 IOS 插件

    我在 XCode 中收到此错误 2013 08 23 14 36 18 284 Tell The DJ 14955 c07 ERROR Plugin Device not found or is not a CDVPlugin Check
  • 我可以使用 UriTemplate 将非字符串传递给 WCF RESTful 服务吗?

    我可以执行以下操作吗 OperationContract WebGet UriTemplate foo id string GetFoo int id 我希望我的服务既可以作为 RESTful 服务 又可以作为 RPC 样式的 SOAP 服
  • 如何在C++中链接头文件

    我是使用头文件进行 C 编程的新手 这是我当前的代码 a h ifndef a H define a H namespace hello class A int a public void setA int x int getA endif