【问题标题】:Trying to compile cross-platform C++ code.Undefined reference to C function尝试编译跨平台 C++ 代码。未定义对 C 函数的引用
【发布时间】:2010-12-11 14:50:39
【问题描述】:

我在我的 C++ 代码中使用了 C 库 RS232 来控制 Arduino Uno 板。在我的 main.cpp 中,我得到了:

#include "rs232.h"

因为在 rs232.h 头文件中,他们已经有了:

#ifdef __cplusplus
extern "C" {
#endif

在一个文件夹中,我有: 主文件 rs232.h rs232.c 标准数据文件 stdafx.cpp

我使用 cygwin 编译,以便代码可以用于 Linux:

g++ main.cpp

但我收到“...未定义的对 '_OpenComport' 的引用”的错误,并且类似于我从 main.cpp 调用的所有 C 函数。

谁能告诉我如何在 C++ 中包含 C 头文件?还是我对g++使用了错误的命令?

【问题讨论】:

    标签: c++ g++ compiler-errors


    【解决方案1】:

    你需要将所有源文件传递给编译器,像这样

    g++ -o demo.exe main.cpp rs232.c stdafx.cpp
    

    或者,将部件编译到库中,并将编译和链接步骤分开。

    【讨论】:

    • 谢谢...它有效。对于以 Windows 为中心的人来说,如此简单却又如此难以捉摸。
    • 在 Windows 中,如果你尝试只编译 main.cpp,你会得到完全相同的错误。
    • 好吧,我使用 Visual Studio 编写了代码,直到现在我还没有移植到 Linux。
    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多