0

我在 xcode 项目中使用 cpp 文件。在 cpp 文件中,我执行以下操作

ReadYML.h

typedef struct {
    float Position[3];
    float Color[4];
    float TexCoord[2];
} Vertex_OR;

extern Vertex_OR Vertices_OR [100];

extern GLubyte Indices_OR [30];

在ReadYML.cpp

我为此赋值。

在视图.m

我宣布“sample.h”

并尝试访问 Vertices_OR 和 Indices_OR 但收到以下错误?

Undefined symbols for architecture i386:
  "_Indices_OR", referenced from:
      loadyml() in ReadYMLfile.o
  "_Vertices_OR", referenced from:
      loadyml() in ReadYMLfile.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这里有什么问题?我需要使用“Sample.h”中声明的全局变量来访问view.m?可能吗?

4

1 回答 1

2
extern Vertex_OR Vertices_OR [100];

extern GLubyte Indices_OR [30];

意思是“extern嘿,编译器,这个符号存在于某处”。如果您在某个编译单元的某处没有类似以下的相应声明,您将收到该链接错误(即,将其放在相应的 .m 文件中某处):

Vertex_OR Vertices_OR [100];

GLubyte Indices_OR [30];
于 2013-03-07T16:24:25.527 回答