【问题标题】:Undefined Reference to .. - mingw - winxp - eclipse juno [closed]未定义对..的引用-mingw-winxp-eclipse juno [关闭]
【发布时间】:2013-02-14 11:06:35
【问题描述】:

正如标题所说,我不断收到未定义的错误引用,但我不知道为什么..

我有一个主例程,其中包含我要使用的函数的标头,因此包含在定义该函数的 cpp 文件中。 我还包括了项目设置的路径

我知道我应该发布代码,但我不允许这样做,但仍然希望我能得到一些解决此错误的提示。

提前致谢

UART_write(UARTvar, LVL);  //This is where I call the function

int UART_write(int uart, const char* var);//Declaration in the header

int UART_write(int uart, const char* var)
{
return (int)1;//just for testing
}

对 `UART_write' 的未定义引用

【问题讨论】:

  • 当我按 F3 时(用于进入声明/定义,它会找到声明和定义)
  • 它错过了链接所需的库。
  • 你能告诉我更具体的吗?确切的错误,您的代码的一部分?
  • “我知道我应该发布代码,但我不允许这样做,但仍然希望我能得到一些解决此错误的提示。” -1 过于本地化。
  • 要么缺少编辑器没有注意到的重载,要么您没有链接所有文件。没有看到错误消息和来源,我们无法判断。

标签: c++ c windows-xp mingw eclipse-juno


【解决方案1】:

如果你有以下项目结构:

header.h:

#ifndef _HEADER_H_
#define _HEADER_H_

int UART_write(int uart, const char* var);

#endif

ma​​in.c:

#include "header.h"

int main()
{
    ...
    UART_write(UARTvar, LVL);
    ...
}

所以请确保您没有在任何其他地方定义_HEADER_H_,因为在这种情况下UART_write()原型不会包含在构建中。

另外请检查UART_write() 原型是否未放置在#if#ifdef#endif 预处理器命令之间。

最后一个,您可以通过在标题中的 UART_write() 原型之前添加 #error "This code is compiled" 来检查上面的内容。如果这部分代码被编译,那么你会得到编译错误This code is compiled

【讨论】:

  • 感谢您的提示 :) 发现错误:不知何故,它无法管理该文件是 *.cpp,因此在将其更改为 *.c 后它可以工作。
猜你喜欢
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多