C 在静态库中定义枚举

C 在静态库中定义枚举,c,windows,eclipse,static-libraries,C,Windows,Eclipse,Static Libraries,我有一个带有枚举的文件foo.h: #ifndef FOO_H #define FOO_H enum foo_e { foo_a, foo_b, foo_c }; typedef enum foo_e foo_t; foo_t get_foo(char bar); #endif 文件foo.c导入它(#包括“foo.h”)并使用它不会出现问题 我通过Eclipse导出这个项目的静态库,给我一个libFoo.a 在另一个项目中,我使用了这个库,所有的符号都被解析、编译并运行良好。只有enu

我有一个带有枚举的文件
foo.h

#ifndef FOO_H
#define FOO_H

enum foo_e { foo_a, foo_b, foo_c };
typedef enum foo_e foo_t;

foo_t get_foo(char bar);

#endif
文件
foo.c
导入它(
#包括“foo.h”
)并使用它不会出现问题

我通过Eclipse导出这个项目的静态库,给我一个
libFoo.a

在另一个项目中,我使用了这个库,所有的符号都被解析、编译并运行良好。只有
enum
声明无法识别。Eclipse告诉我,
foo\u t
foo\u a
foo\u b
foo\u c
是未定义的,而
get\u foo
是定义的


为什么?

这是Eclipse如何索引项目的问题。您可以通过刷新项目的Eclipse索引来解决这个问题

  • 右键单击出现错误的项目(不是静态库),然后选择“刷新所有文件”
  • 再次右键单击
    Index>Rebuild

  • 您的项目现在应该能够在任何包含的静态库中找到所有符号。

    没有一个
    foo\u t
    foo\u a
    foo\u b
    foo\u c
    是对象,因此不会出现在(静态)库中。如果您包含了相关的标题,并且Eclispe可以看到它(并且假设您还没有定义FOO#u H),那么这听起来像是Eclipse遇到了糟糕的一天。我将
    FOO.H
    包含在使用“FOO”作为静态库的项目中。您能显示另一个项目中出现错误的行吗?