Post marked as solved
Post marked as solved with 4 replies, 1,627 views
ld_prime of Xcode 15 produces duplicate symbols when linking a static library containing Objective-C++ object in case using the flags -ObjC and -Wl,force_load.
// foo.h
#pragma once
int Inc(int i);
// foo.mm
#include "foo.h"
#include <Foundation/Foundation.h>
@interface Foo : NSObject
@end
@implementation Foo
@end
int Inc(int i) {
return i + 1;
};
// main.cpp
#include "foo.h"
int main(int argc, const char * argv[]) {
return Inc(0);
}
❯ clang++ -c foo.mm
❯ ar rcs libfoo.a foo.o
❯ clang++ -framework Foundation libfoo.a -x c++ main.cpp -Wl,-force_load,libfoo.a -ObjC
duplicate symbol '__Z3Inci' in:
libfoo.a[2](foo.o)
libfoo.a[2](foo.o)
duplicate symbol '_OBJC_CLASS_$_Foo' in:
libfoo.a[2](foo.o)
libfoo.a[2](foo.o)
duplicate symbol '_OBJC_METACLASS_$_Foo' in:
libfoo.a[2](foo.o)
libfoo.a[2](foo.o)
ld: 3 duplicate symbols
clang: error: linker command failed with exit code 1 (use -v to see invocation)```