OpenCV 未定义引用库中我自己的方法
OpenCV undefined reference to my own method in library
我用C++ OpenCV写了一个软件,就是这么结构化:
- main.cpp
- testfps.cpp
- testfps.hpp
问题是我得到了这两个错误
undefined reference to "myTestfps1(int, int)"
undefined reference to "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
这有什么问题?
正如 Samuel 所指出的,您可能遇到的主要问题是您没有将 testfps.cpp 包括在您的编译中。
如果您 运行 使用 g++ linux,试试这个:
g++ -o testfps main.cpp testfps.cpp
无论如何,由于您使用的是 C++,我建议您不要使用 stdio.h 和 stdlib.h 等 C 头文件。而是使用 cstdio 和 cstdlib:
#include <cstdlib>
#include <cstdio>
最后,你对main的定义是错误的,argv不是指针3:
int main(int argc, char* argv[])
或:
int main(int argc, char** argv)
我用C++ OpenCV写了一个软件,就是这么结构化:
- main.cpp
- testfps.cpp
- testfps.hpp
问题是我得到了这两个错误
undefined reference to "myTestfps1(int, int)"
undefined reference to "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
这有什么问题?
正如 Samuel 所指出的,您可能遇到的主要问题是您没有将 testfps.cpp 包括在您的编译中。
如果您 运行 使用 g++ linux,试试这个:
g++ -o testfps main.cpp testfps.cpp
无论如何,由于您使用的是 C++,我建议您不要使用 stdio.h 和 stdlib.h 等 C 头文件。而是使用 cstdio 和 cstdlib:
#include <cstdlib>
#include <cstdio>
最后,你对main的定义是错误的,argv不是指针3:
int main(int argc, char* argv[])
或:
int main(int argc, char** argv)