我遇到了“Apple Mach-O Linker (Id) Error”错误:
我已经检查过是否有任何 ".m" 的导入而不是 ".h",一切都正确。你有什么想法,是什么原因导致了这个问题?
编辑:发布来自 "Utils.h" 的代码
ld: duplicate symbol _matrixIdentity in /BlahBlah/Corridor.o and /Blahblah/Drawable.o for architecture i386
类“Corridor”继承了类“Drawable”,并且“_matrixIdentity”在“Utils.h”文件中定义和实现。以下是我的头文件的顶部行:
Drawable.h
#import <Foundation/Foundation.h>
#import "Utils.h"
@interface Drawable : NSObject
...
Corridor.h
#import <Foundation/Foundation.h>
#import "Drawable.h"
@interface Corridor : Drawable
...
我已经检查过是否有任何 ".m" 的导入而不是 ".h",一切都正确。你有什么想法,是什么原因导致了这个问题?
编辑:发布来自 "Utils.h" 的代码
#import <Foundation/Foundation.h>
...
#pragma mark -
#pragma mark Definitions
typedef float mat4[16];
#pragma mark -
#pragma mark Functions
void matrixIdentity(mat4 m)
{
m[0] = m[5] = m[10] = m[15] = 1.0;
m[1] = m[2] = m[3] = m[4] = 0.0;
m[6] = m[7] = m[8] = m[9] = 0.0;
m[11] = m[12] = m[13] = m[14] = 0.0;
}
...
我在我的两个类方法中只引用了 "mat4" 定义。另外,“matrixIdentity”只是这个文件中的第一个函数,问题可能不在实现上。