c++ 自定义类出现Undefined symbols for architecture x86_64

错误描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值