「AppleMach-Oリンカー(Id)エラー」が発生します:
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
...
「.h」の代わりに「.m」のインポートがあるかどうかはすでに確認しましたが、すべて正しいです。何か考え、この問題を引き起こす可能性があるのは何ですか?
編集:「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」はこのファイルの最初の関数であり、実装に問題がない可能性があります。