iphone – Xcode重复符号错误
发布时间:2020-12-14 20:03:29 所属栏目:百科 来源:网络整理
导读:我得到“Apple Mach-O Linker(Id)Error”: ld: duplicate symbol _matrixIdentity in /BlahBlah/Corridor.o and /Blahblah/Drawable.o for architecture i386 “Corridor”类扩展了“Drawable”类,“_ matrixIdentity”在文件“Utils.h”中定义和实现.以下
我得到“Apple Mach-O Linker(Id)Error”:
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”只是这个文件中的第一个函数,可能是问题没有在实现中. 解决方法
C/C++ / Objective-C与Java,C#,Ruby,Python的差异……
划分文件. 标题&毫米 不要使用#include(可能包括很多次) 使用#import …(包含一次) Utils.h #ifndef __utils_h__ // <<< avoid multiple #include #define __utils_h__ // <<< avoid multiple #include #import <Foundation/Foundation.h> ... #pragma mark - #pragma mark Definitions typedef float mat4[16]; #pragma mark - #pragma mark Functions extern void matrixIdentity(mat4 m); #endif // __utils_h__ <<< avoid multiple #include Utils.mm #import "Utils.h" 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; } ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |