错误描述
Undefined symbols for architecture x86_64:
“MyLIs::MyLIs(char const*)”, referenced from:
_main in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
可能错误
It seems like the function log is not defined, but I defined it in the debug.cpp file. I’ve been working at this for hours… Can anyone help me?
Also, If it helps here are the commands Xcode is using the build the program:
Ld /Users/home/Library/Developer/Xcode/DerivedData/tiled-bhqwfqpsuugzhkagbmrhebnbgnpb/Build/Products/Debug/tiled normal x86_64 cd /Users/home/Documents/tiled export MACOSX_DEPLOYMENT_TARGET=10.10 /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -L/Users/home/Library/Developer/Xcode/DerivedData/tiled-bhqwfqpsuugzhkagbmrhebnbgnpb/Build/Products/Debug -L/usr/local/lib -F/Users/home/Library/Developer/Xcode/DerivedData/tiled-bhqwfqpsuugzhkagbmrhebnbgnpb/Build/Products/Debug -filelist /Users/home/Library/Developer/Xcode/DerivedData/tiled-bhqwfqpsuugzhkagbmrhebnbgnpb/Build/Intermediates/tiled.build/Debug/tiled.build/Objects-normal/x86_64/tiled.LinkFileList -mmacosx-version-min=10.10 -stdlib=libc++ -lglfw.3.1 -framework OpenGL -Xlinker -dependency_info -Xlinker /Users/home/Library/Developer/Xcode/DerivedData/tiled-bhqwfqpsuugzhkagbmrhebnbgnpb/Build/Intermediates/tiled.build/Debug/tiled.build/Objects-normal/x86_64/tiled_dependency_info.dat -o /Users/home/Library/Developer/Xcode/DerivedData/tiled-bhqwfqpsuugzhkagbmrhebnbgnpb/Build/Products/Debug/tile
回复:
possible duplicate of What is an undefined reference/unresolved external symbol error and how do I fix it? – Captain Obvlious Jul 25 '15 at 0:21
Can you give us what ide you are using, or what you are using for you command-line build parameters? – Kevin Jul 25 '15 at 0:26
Yeah! I’ll add that in to the question. – Ben Jul 25 '15 at 0:32
To fix this I got rid of the .cpp file and just made those inline functions. Because this was just a workaround, I’m not going to select this as an answer.
1
If you get rid of the debug.cpp and make those function as inline in debug.hpp and the error disappears, that means your build system linker does not know how to find the debug.obj, or the debug.cpp wasn’t compiled. This could be caused by improper setup of your project in the IDE you are using. What IDE you are using and how does your project and files created and structured? – simon Jul 25 '15 at 6:08
I’m using Xcode and you’re right, debug.cpp wasn’t compiled. However when I add it back in, I get a duplicate symbols linker error. – Ben Jul 25 '15 at 7:10
1
You added back the debug.cpp. Did you remove the inlined implemention in debug.h? If not, it will give you duplicated symbol in linking as you are having two implementation now. Does your main and your debug.cpp sitting on the same project or different project? If different project, have you properly setup project reference or library path? – simon Jul 25 '15 at 8:14
我自己代码里是:在cpp文件中,inline 函数修饰出现的问题,将inline 修饰去掉即可
修改前:
#include "MyLIs.h"
inline MyLIs::MyLIs(const char* cstr) {
}
修改后:
#include "MyLIs.h"
MyLIs::MyLIs(const char* cstr) {
}
参考地址:https://stackoverflow.com/questions/31621546/c-undefined-symbols-linker-error-xcode