C++ 常见的 Undefined symbols for architecture *

出现

Undefined symbols for architecture x86_64:

的原因

1.函数申明了,却未被定义。

2.申明的虚函数未被实现。

NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.

3.使用template <class T> 实现类时。若是将函数声明写在.h文件,实现写在.cpp。则出现Undefined symbols for architecture x86_64。应将申明和实现都放在.h文件

template <class T>
class Heap {
    typedef typename vector<T>::iterator iterator;
private:
    vector<T> container;
    void swim(int i);
    void sink(int i);
};
template <class T>
void Heap<T>::swim(int i) {
    while (i > 1&&container[i]>container[i/2])
    {
        T temp = container[i];
        container[i] = container[i/2];
        container[i/2] = temp;
        i = i/2;
    }
}

http://www.cnblogs.com/like1/p/6848669.html

时间: 2024-10-18 03:35:59

C++ 常见的 Undefined symbols for architecture *的相关文章

ios build时,Undefined symbols for architecture xxx问题的总结

这2天升级到xcode6,用ios8 SDK编译老项目,各种Undefined symbols for architecture xxx,精神差点崩溃了.不过最后还是解决了,本文简单总结一下 简单来说,Undefined symbols基本上等于JAVA的ClassNotFoundException,最常见的原因有这几种: build的时候没有加framework 比如说,有一段代码我用了OpenGL,引入了头文件 #import <OpenGLES/ES2/glext.h> build的时候

Undefined symbols for architecture xxx,出错总结

简单来说,Undefined symbols基本上等于JAVA的ClassNotFoundException,最常见的原因有这几种: 1.build的时候没有加framework build的时候,compile阶段没有问题,但是link就报错Undefined symbols for architecture xxx(这里xxx可能是armv7s,armv7或者arm64,取决于配置,稍后会说).解决方法是在Build Phases的Link Binary With Libraries里加入x

iOS Undefined symbols for architecture xxx问题的总结

今天项目刚更换了最新的播放器,结果在touch上build时遇到了Undefined symbols for architecture armv7的问题,在5s跟6上没有问题.之前就不少次遇到过这样的问题,都是匆匆解决了然后继续修复别的bug,今天看到了一篇讲的还算比较细的博客,就顺手拿了过来,之后在补充结合自己项目的理解吧. 以下为引用内容:原文链接http://www.th7.cn/Program/IOS/201410/296636.shtml 简单来说,Undefined symbols基

oc调用c++接口时 报错 Undefined symbols for architecture i386:

当在oc中调用c++中的方法时,发现说c++中的方法没定义或是找不到 Undefined symbols for architecture i386: "_desTYData", referenced from:-[TuYoo encryptParametersWithDict:] in libtuyoo.a(TuYoo.o)ld: symbol(s) not found fo 记得c++中的方法定义是要这样定义的 extern"C" { const char *d

微信分享SDK导入报错 Undefined symbols for architecture i386:

Undefined symbols for architecture i386:   "operator delete[](void*)", referenced from:       +[WeChatApiUtil EncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)       +[WeChatApiUtil NsDataEncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)       +

mac编译openresty报Undefined symbols for architecture x86_64

./configure --prefix=/usr/local/openresty --with-luajit --with-http_sub_module --add-module=../ngx_http_substitutions_filter_module-0.6.4 make时报错如下 -Wl,-rpath,/usr/local/openresty/luajit/lib -L/Applications/ngx_openresty-1.4.3.6/build/luajit-root/usr

XCode 6.4编译错误----Undefined symbols for architecture i386: &quot;_fwrite$UNIX2003&quot;

使用xcode在模拟器iphone4s和iphone5出现错误 编译时的错误描述: Undefined symbols for architecture i386: "_fwrite$UNIX2003", referenced from: 一开始感觉是.a文件没有单独编译i386,x86_64导致,重新编译后 lipo -info xxxx.a 发现.a文件即使支持i386,x86_64,但还是编译不通过. 网上查了一些资料后,发现解需要在工程中添加一个.c 文件 #include &

xcode编译出错:Undefined symbols for architecture armv7

在xcode中编译oc和c++代码时出现如下错误: Undefined symbols for architecture armv7 "std::basic_ostream<char, std::char_traits<char> >& std::operator<<<char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<

iOS 错误 undefined symbols for architecture i386

undefined symbols for architecture i386 这个错误困扰了我几个小时. 网上很多问这个问题的,回答基本上都是说在 target 里面去的 armv64 什么什么的. 但问题根本不在这里! 巨简单的问题,就是缺少必要的库!进入 target - general,添加 libz.dylib 完事! 可是网上的各种答案对我造成了深深的误导,使我白白浪费了几小时时间.我就奇怪问什么这个答案网上就是找不到,而我也是偶然发现. 但是没什么用这个库,以及这个库具体作用是什么