OpenCV未定义引用我自己在库中的方法
Posted
技术标签:
【中文标题】OpenCV未定义引用我自己在库中的方法【英文标题】:OpenCV undefined reference to my own method in library 【发布时间】:2015-01-25 12:12:28 【问题描述】:我用 C++ OpenCV 写了一个软件,它是如此结构化:
main.cpp testfps.cpp testfps.hpp问题是我得到了这两个错误
对“myTestfps1(int, int)”的未定义引用 未定义对“myTestfps2(int, int)”的引用
这两个方法写在testfps.cpp中,声明在testfps.hpp中。
在main.cpp中声明了所有必要的#include <name>
,在它们之后是#include "testfps.hpp"
main.cpp
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "testfps.hpp"
int main(int argc, char** argv[])
....
switch(c)
case 1: myTestfps1(a,b);break;
case 2: myTestfps2(a,b);break;
...
testfps.cpp
#include <opencv2/opencv.hpp>
#include <time.h>
#include <stdio.h>
#include "testfps.hpp"
int myTestfps1(int a, int b)
...
int myTestfps2(int a, int b)
...
testfps.hpp
#ifndef TESTFPS_HPP
#define TESTFPS_HPP
int myTestfps1(int a, int b);
int myTestfps2(int a, int b);
#endif
这是怎么回事?
【问题讨论】:
你真的把 testfps.cpp 添加到你的项目中了吗? 我在 code::blocks 上创建了一个项目,我只是构建它,bt 我不知道编译是否忽略 testfps.cpp 我该如何检查? 【参考方案1】:正如 Samuel 指出的那样,您可能遇到的主要问题是您没有在编译中包含 testfps.cpp。
如果您使用 g++ 在 linux 上运行,请尝试以下操作:
g++ -o testfps main.cpp testfps.cpp
无论如何,由于您正在使用 C++,我建议您不要使用 C 头文件,例如 stdio.h 和 stdlib.h。而是使用 cstdio 和 cstdlib:
#include <cstdlib>
#include <cstdio>
最后,你对main的定义错了,argv不是指针3:
int main(int argc, char* argv[])
或:
int main(int argc, char** argv)
【讨论】:
好的,很好!但现在我收到错误“未定义对 openCV 方法的引用”。我应该在 g++ -o testfps main.cpp testfps.cpp 之后在 CLI 中链接库吗? 谢谢我也用这个答案解决了***.com/questions/5971206/…以上是关于OpenCV未定义引用我自己在库中的方法的主要内容,如果未能解决你的问题,请参考以下文章
链接错误:Armadillo 库中的“未定义对‘pthread_atfork’的引用”