在 C++ 中包含 C 代码

2023-11-27

我试图将 C 代码包含到一个简单的 C++ 程序中,但遇到了一个意想不到的问题 - 当我尝试编译程序时,g++ 给出了以下错误:

/tmp/cccYLHsB.o: In function `main':
test1.cpp:(.text+0x11): undefined reference to `add'

我搜索了解决方案并找到了这个教程:

http://www.parashift.com/c++-faq/overview-mixing-langs.html

我的程序似乎没有什么区别,所以我有点迷失......

我的 C++ 程序如下所示:

测试1.ccp

#include <iostream>
using namespace std;

extern "C" {
#include "sample1.h"
}

int main(void)
{
    int x= add(3);

    cout << "the current value of x is " << x << endl;

    return 0;
}

Sample1 标头和函数如下所示:

样本1.h

#include <stdio.h>

double add(const double a);

样本1.c

#include "sample1.h"

double add(const double a)
{
    printf("Hello World\n");

        return a + a;
}

对于编译,我首先使用 g++ 编译 test1.o ,使用 gcc 编译sample1.o (也尝试过 g++ 但没有区别)

g++ -c test1.cpp

gcc -c sample1.c

这按预期工作。之后我尝试像这样链接该程序:

g++ sample1.o test1.o -o test

这就是我收到上面提到的错误的地方

test1.cpp:(.text+0x11): undefined reference to `add' 

我有一种感觉,我错过了一些重要的东西,但就是看不到它。

非常感谢任何帮助!

Regards

jules


它按预期工作。确保你没有意外编译sample1.c with g++.

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

在 C++ 中包含 C 代码 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • C++11 删除重写方法

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

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

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

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • Angular - 将组件方法绑定到 DOM 目标属性是错误的做法吗?

    比如说 我有一个组件 其用途如下
  • C# 中的嵌入资源字体无法正常工作

    我嵌入了一个 ttf字体文件 特别是 Amatic Bold 在我的资源中 我使用下面的代码来获取字体 我尝试了这篇文章中的代码 如何在我的 C 应用程序中嵌入字体 使用 Visual Studio 2005 这是我的实现 static p
  • HtmlAgilityPack 中的 NullReferenceException

    我正在尝试提取一个link using xpath从下面提到的网址 string url http www album cover art org search php q Ruin Live Album Version Lamb of G
  • 如何实现均衡器

    我知道 so 中有很多关于均衡器的问题 但我没有得到我想要的东西 我想做的是一个均衡器 用于以如下方式修改音频样本 equalizer eqAudio audiosamples band gain 我不确定这是否是我想要的确切接口 因为我对
  • 设计无密码更新用户

    我想在设备中更新没有密码的用户属性 这种情况就像 如果密码和密码确认字段不为空 那么我需要设计错误 如果它们为空 则需要更新其他用户属性 我怎样才能用 devise 做到这一点 提前致谢 我认为这是一个更好的解决方案 if params u
  • Qt 的 Visual Studio 集成工具有什么区别?

    Trolltech 发布了一款名为 Visual Studio 插件 表彰他们的 Qt LGPL 和 GPL 版本 他们声称商业版本附带了完整的 Visual Studio 集成工具 但我没有看到任何关于它们之间差异的描述 完整版中包含哪些
  • 客户端套接字 - 获取 IP - java

    我正在使用套接字实现 TCP 连接 我需要在服务器端获取客户端套接字的 IP 我已经用过socketName getRemoteSocketAddress 它确实返回了 IP 地址 后跟我正在使用的端口 ID 我怎样才能只获取地址而不获取端
  • 忽略其他类的 System.exit()

    鉴于下面的课程 public class ClassOne public static void main String args System exit 1 假设调用 ClassOne main 后还有其他事情要做 下面的类也将被销毁 p
  • 臃肿的 echo 命令

    看一下 echo 命令的以下实现 http bxr su o bin echo echo c 开放BSD http bxr su d bin echo echo c 蜻蜓 http bxr su n bin echo echo c 网络BS
  • 如何在 IIS 中添加服务器变量

    我对 IIS7 不太熟悉 我需要创建一个服务器变量 以便我可以在 PHP 代码中访问它 我可以在 Apache 中使用以下命令轻松完成此任务 SETENV 变量名 变量值 在 htaccess 文件中 然而 在 IIS 中实现这一点似乎有点
  • 如果没有促销价,如何显示 woocommerce 促销价或正常价格

    我正在使用 woocommerce 产品插件插件 我想在插件的下拉部分中显示产品的价格 目前我的代码是这样的 p class p
  • Exchange Powershell - 如何从内部脚本调用 Exchange 2010 模块?

    我正在编写一个脚本 该脚本可以使用 AD 和 Exchange 执行许多操作 并且刚刚到达 GUI 的部分 我需要在其中开始使用 Exchange 但看不到可以手动指定包含 Exchange 模块的位置 我熟悉的正常过程是导入模块活动目录
  • C# 在 Windows 中读取视频元数据(标题、描述、年份)

    大家好 只是想制作一个程序来浏览视频文件并从文件元数据中读取标题和描述 我找到了一些来自微软的文档here提供了所需的内容 但如何访问这些功能 C 中需要什么 using 命名空间 我希望能提供任何帮助 在您发布的链接中 滚动到底部并单击
  • 使用 Java 和 awt.Robot 时提高屏幕捕获速度

    编辑 如果有人还有任何其他关于提高屏幕捕获性能的建议 请随时分享 因为它可能完全解决我的问题 各位开发者大家好 我正在为自己开发一些基本的屏幕捕获软件 截至目前 我已经得到了一些概念证明 修补代码 它使用 java awt Robot 将屏
  • iPhone :UITableView CellAccessory 复选标记

    在 iPhone 应用程序中 单击表视图单元格我想显示表视图单元格附件类型在 didSelectRowAtIndexPath 上复选标记我正在编写代码 if indexPath row 0 tableView cellForRowAtInd
  • 同时最大运行Web Worker html5

    是否有可以同时运行的 Web Worker 的最大数量 多谢 是和不是 对于 Web Workers 没有硬性限制 但您会受到可用 CPU 和内存的限制 每个工作线程都会产生相当大的 CPU 和内存开销 因此如果您分拆大量工作线程 可能会导
  • java swing中的setvisible方法挂起系统

    我目前正在开发银行 gui 应用程序 我的 jdialog 的 setvisible 方法似乎有问题 用户提取有效金额后 我会弹出一个简单的对话框 显示 交易正在进行中 在我的 dobackground 方法中 我不断轮询以检查是否已收到交
  • 如何修复ConnectionRefusedError: [WinError 10061]目标机器主动拒绝呢? (Django 电子邮件)

    我正在使用 Django 发送电子邮件 我显然遇到了一个常见的网络错误 但我读过的任何答案都没有解决 我相信插座有问题 当我发送电子邮件时 出现以下错误 Traceback most recent call last File
  • Android ViewFlipper 动画

    我陷入了一个简单的问题 这让我发疯 基本上我有 2 个 ImageView 我试图让第一个显示一秒钟 然后淡出以显示第二个 我一直在研究使用 ViewFlipper 下面的示例代码 但动画不存在 ViewFlipper mFlipper n
  • 在 C++ 中包含 C 代码

    我试图将 C 代码包含到一个简单的 C 程序中 但遇到了一个意想不到的问题 当我尝试编译程序时 g 给出了以下错误 tmp cccYLHsB o In function main test1 cpp text 0x11 undefined