make all -j1
CXX/LD -o .build_release/tools/create_label_map.bin
.build_release/lib/libcaffe-nv.so:对‘caffe::BlockingQueue<cv::Mat>::peek()’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘caffe::BlockingQueue<caffe::AnnotatedDatum>::push(caffe::AnnotatedDatum const&)’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘caffe::BlockingQueue<cv::Mat>::push(cv::Mat const&)’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘caffe::BlockingQueue<cv::Mat>::~BlockingQueue()’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘caffe::BlockingQueue<cv::Mat>::BlockingQueue()’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘caffe::BlockingQueue<cv::Mat>::size() const’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘caffe::BlockingQueue<caffe::AnnotatedDatum>::size() const’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘caffe::BlockingQueue<caffe::AnnotatedDatum>::peek()’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘void caffe::caffe_rng_uniform<int>(int, int, int, int*)’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘caffe::BlockingQueue<caffe::AnnotatedDatum>::pop()’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘caffe::BlockingQueue<cv::Mat>::pop()’未定义的引用
collect2: error: ld returned 1 exit status
Makefile:666: recipe for target '.build_release/tools/create_label_map.bin' failed
make: *** [.build_release/tools/create_label_map.bin] Error 1

现在这个出错发生在我把nvcaffe0.16.4的一个数据处理层迁移到0.17.0上面。修改了无数个地方,眼看要编译通过了最后报这个未定义的引用,无从下手。都凌晨1点了,太累了就心有不甘的关电脑躺床上睡觉,但是脑子很活跃啊就是睡不着,可真难受。太难了。

然后第二天6点就醒了起来弄。
分析这个错误总共有2个模板感觉有问题。BlockingQueue和caffe_rng_uniform。
然后我去对比0.16.4和0.17.0的定义BlockingQueue的cpp,一对比我就知道问题所在了!
正如报错的提示的,未定义。

可以看到在blocking_queue.cpp最下面还是写了所需要用到的类型。也就是说需要把自己要用到的类型显式的写在这,作为一个头文件定义写在这里。
原来模板还需要这样!

template class BlockingQueue<int>;
template class BlockingQueue<shared_ptr<Batch>>;
template class BlockingQueue<shared_ptr<Datum>>;
template class BlockingQueue<shared_ptr<AnnotatedDatum>>;
template class BlockingQueue<P2PSync*>;
template class BlockingQueue<shared_ptr<caffe::TBlob<float>>>;
template class BlockingQueue<shared_ptr<caffe::TBlob<double>>>;
template class BlockingQueue<shared_ptr<caffe::TBlob<float16>>>;}  // namespace caffe

加上和错误提示的类型就可以。
template class BlockingQueuecv::Mat;
template class BlockingQueue;

同样的。caffe_rng_uniform也需要加上用到的都是int的类型。

template
void caffe_rng_uniform<float>(int n, float a, float b, Blob* blob);
template
void caffe_rng_uniform<double>(int n, double a, double b, Blob* blob);
template<>
void caffe_rng_uniform<float16>(int n, float16 a, float16 b, Blob* blob) {caffe_rng_uniform(n, static_cast<float>(a), static_cast<float>(b), blob);
}
template
void caffe_rng_uniform<float>(int n, float a, float b, float* r);
template
void caffe_rng_uniform<double>(int n, double a, double b, double* r);
template
void caffe_rng_uniform<int>(int n, int a, int b, int* r);/add //

关于这个未定义的引用的错误难道就是因为没有写函数声明就会报这个错误吗?
之前没有相应的库也会报这个错误。

so 对XXX未定义的引用相关推荐

  1. XXX 未定义的引用的分析

    最近在项目过程中,移植的时候编译器提示"XXX 未定义的引用",一般是链接没有找到对应XXX的具体实现所报出来的问题.出现这个问题的原因,刚开始是以为没有将的相应的函数实现,但是从 ...

  2. VS远程开发(远程调试)编译报错:对‘xxx’未定义的引用(设置库依赖顺序)(已解决)pthread(项目-->属性-->链接器-->输入-->库依赖项)

    如图在VS中对linux进行远程开发时,编译报错: 貌似是因为在代码中使用了pthread.h的函数,链接库依赖顺序出了问题,我在ubuntu里手动使用gcc main.c -lpthread -o ...

  3. 结合xxx.cpp:(.text+0x55):对‘xxx’未定义的引用剖析Linux环境下动态库.so文件

    操作系统:Linux系统 场景:g++编译,连接动态库文件时 错误示例(中文): /tmp/cccgNNpb.o:在函数'main'中: test.cpp:(.text+0x55):对'myprint ...

  4. 对‘XXX‘未定义的引用

    出现这种情况的原因,主要是C/C++编译为obj文件的时候并不需要函数的具体实现,只要有函数的原型即可.但是在链接为可执行文件的时候就必须要具体的实现了.如果错误是未声明的引用,那就是找不到函数的原型 ...

  5. ubuntu 编译c程序报错:对‘pthread_create’未定义的引用

    在ubuntu里编译c多线程代码,命名包含了头文件<pthread.h>,却还是编译报错,说对'pthread_create'未定义的引用 原因: pthread库不是Linux系统默认的 ...

  6. g linux 未定义的引用_【转】 g++编译时对'xxxx'未定义的引用问题(undefined reference to)...

    转自:https://blog.csdn.net/killwho/article/details/53785910 引用:http://www.linuxdiyf.com/linux/16754.ht ...

  7. 问题记录 -- 未定义的引用 ||| not found

    目录 例子0 对'myprojectApi::myprojectApi(bool, int, int, bool)'未定义的引用 例子1 源码编译opencv,报错 libopencv_imgcode ...

  8. libSM.so、libfontconfig.so:未定义的引用

    PCL在make时报错 /usr/lib/x86_64-linux-gnu/libSM.so:对'uuid_generate@UUID_1.0'未定义的引用 /home/rick/anaconda3/ ...

  9. 解决libresource_retriever.so:对‘curl_easy_init@CURL_OPENSSL_3’未定义的引用 ,undefined reference to `uuid_gene

    解决libresource_retriever.so:对'curl_easy_init@CURL_OPENSSL_3'未定义的引用 /usr/lib/x86_64-linux-gnu/libapr-1 ...

最新文章

  1. HBASE+Solr实现详单查询--转
  2. elasticsearch6.2.2安装中文分词插件IK analyzer
  3. Linux操作系统文档
  4. RowTime field should not be null, please convert it to a non-null long value.
  5. python提取文章中的中文数字
  6. python兼容js base64_前端base64编码的坑
  7. 【Android】No resource found that matches the given name 'Theme.Sherlock.Light.NoActionBar'
  8. 多路平衡归并和败者树
  9. 【转载】ArrayList 中数据删除 fail fast
  10. 你想过35岁以后的出路吗
  11. 算法笔记_010:插入排序(Java)
  12. BZOJ4480[JSOI2013]快乐的jyy
  13. Linux装股票交易系统,linux下的股票软件
  14. noi题库 1.5编程基础之循环控制 :题解大礼包20180720
  15. esp8266~获取mpu6050六轴传感器数据 [可在此基础上做wifi平衡小车]
  16. enumerate和iter的使用
  17. 一个具有多个组件的在线平面图设计 平面图 在线制图
  18. 什么牌子的蓝牙耳机好?重低音分体式蓝牙耳机!
  19. Python爬虫包 BeautifulSoup 递归抓取实例详解
  20. zip直链生成网站_防止赖床的闹钟软件、免费好用的看图软件、色卡生成器 今天有什么?...

热门文章

  1. 蓝桥杯 ALGO-121 算法训练 猴子分苹果
  2. python爬取淘宝淘女郎图片
  3. win10计算机恢复,win10 重置电脑 选择哪个?要恢復到新电脑的那样
  4. 程序员2年苦心积攒学习资料【下载】
  5. 北京卫星地图 百度卫星地图高清版(含道路地名标签叠加)
  6. 403 Forbidden vs 401 Unauthorized HTTP 响应
  7. Android智能电视应用程序开发浅谈(一)
  8. Python3.x+迅雷x 自动下载高分电影,嘿嘿!你懂的
  9. JVM干货!最全最详细的JVM性能优化专题 第二弹
  10. Linux下poky编译1