OpenCV 未定义引用库中我自己的方法

OpenCV undefined reference to my own method in library

我用C++ OpenCV写了一个软件,就是这么结构化:

问题是我得到了这两个错误

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)