这感觉很傻,但是从Ubuntu 10.04升级到10.11并从Eclipse Helios升级到Eclipse Indigo之后的某个地方......我遇到了以下问题:
我正在尝试在math.h中使用一个名为isinf()的函数,但问题也出现在像isnan()这样的事情上。
该程序在命令行中使用make和fine在eclipse中编译得很好使用build。
但是如果我在eclipse中打开程序文件,它会报告它无法解析isinf()函数调用。
如果我只是将程序内容插入到一个新项目和新的源文件中,错误立即出现。
在Eclipse Helios CDT 11.04下没有出现此问题
为什么这些错误仅在程序文件打开时报告,而在编译程序时不报告;为什么没有检测到的错误是从命令行运行的?是否有可用的解决方案/解决方法?
Linux Ubuntu 10.11 64位
Eclipse CDT Indigo,Service Release 1,Build id:20110916-0149
(也使用Eclipse EE Indigo - 如果这有所不同)
GNU Make 3.81
gcc 4.6.1-9Ubuntu3
请在下面找到您需要复制的两个文件:
步骤0。验证Eclipse外的一切都很好
复制附加的源文件并生成文件
创建目录,例如Mkdir FunTest
将源文件保存为“Test.cpp”,将makefile保存为“makefile”
打开命令提示符并导航到目录,例如FunTest
输入'make'
输入./TestOut
程序响应“不是无限”
第1步。在Eclipse中创建项目
打开Eclipse
选择File | New | MakeFile Project with Existing Code
单击“浏览” - 导航到目录(FunTest),然后单击“确定”
从工具链选择器中选择“Linux GCC”
单击完成
第2步。查找错误
单击Build All(Ctrl-B) - 项目构建没有错误
在项目资源管理器中打开项目,以在目录
中显示该文件
双击文件“Test.cpp”
请注意无限的线路测试旁边的错误图标
请注意2条错误消息:
Semantic error: Function _isinff could not be resolved
Semantic error: Function _isinfl could not be resolved
Test.cpp的:
include <math.h>
int main(int argc, char **argv)
{
int TestNum = 10;
if (isinf(TestNum) == 0)
printf("Not infinite\n");
return 0;
}
生成文件:
# Specify the compiler
CC = g++
# Specify the compiler flags
CFLAGS += -c
# Specify the files making up the application
SOURCES = Test.cpp
OBJECTS = $(SOURCES:.cpp=.o)
EXECUTABLE = TestOut
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(LDLIBS) -o $@
.cpp.o:
$(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@
install:
@echo "Build complete!"
答案 0 :(得分:7)
即使代码在Eclipse Indigo中编译得很好,我也遇到过类似的CDT报告错误问题。
项目&gt;属性&gt;设置&gt;二元解析器&gt; “GNU Elf Parser”
在我的案例中有所帮助。我检查了“精灵解析器”。
答案 1 :(得分:4)
这看起来像许多其他人之前使用eclipse CDT的问题。有时关闭日食然后重新启动它就足以帮助了。如果不是这样,请看看下面的内容:
答案 2 :(得分:3)
检查您的内容:如果您使用的是include<math.h>
,请将其更改为include<cmath>
。同样适用于stdio.h
和stdlib.h
,您应该由cstdio
和cstdlib
替换。另一个选择可能是将项目更改为C项目而不是C ++。
答案 3 :(得分:0)
您的构建首选项中缺少-lm选项。 项目 - &gt;属性 - &gt;设置 - &gt; Miscleanous-&gt;其他(链接器)标志[]
答案 4 :(得分:0)
对我来说,它是通过添加特定的“源位置”文件夹并删除默认值来解决的。在Luna,它位于:
项目&gt;属性&gt; C / C ++一般&gt;路径和符号&gt;资源 位置