我仍然遇到一个无法编译的正在进行的项目的问题。我已将其缩小到包含但无法弄清楚发生了什么。我已经读过我需要添加一个WinMain入口点,但这并没有加起来 - 我有同学没有遇到这个狗屎错误。 所以我创建了一个新的空项目:
#include <cstdlib> //include c library
//using namespace std;
//using namespace cv;
namespace sp {
int main() {
return 0;
}
}
以下内容包括:
在GCC C ++编译器包含:
C:\Users\Amit\Desktop\opencv\build\include
C:\opencv_contrib-3.0.0\modules\xfeatures2d\include
在MinGW C ++链接库下:
libopencv_core310
libopencv_imgcodecs310
libopencv_imgproc310
libopencv_xfeatures2d310
libopencv_features2d310
libopencv_highgui310
在MinGW C ++链接库搜索路径下:
C:\Users\Amit\Desktop\opencv\build\x86\mingw\lib
但是,如果没有调用这些库中的任何函数,我会收到此错误:
09:45:43 **** Incremental Build of configuration Debug for project testing ****
Info: Internal Builder is used for build
g++ "-IC:\\opencv_contrib-3.0.0\\modules\\xfeatures2d\\include" "-IC:\\Users\\Amit\\Desktop\\opencv\\build\\include" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\testing.o" "..\\src\\testing.cpp"
g++ "-LC:\\Users\\Amit\\Desktop\\opencv\\build\\x86\\mingw\\lib" -o testing.exe "src\\testing.o" -llibopencv_core310 -llibopencv_imgcodecs310 -llibopencv_imgproc310 -llibopencv_xfeatures2d310 -llibopencv_features2d310 -llibopencv_highgui310
c:/mingw/bin/../lib/gcc/mingw32/4.9.3/../../../libmingw32.a(main.o):(.text.startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
09:45:43 Build Finished (took 396ms)
有人可以救我吗?
谢谢, 阿米特。
答案 0 :(得分:2)
创建可执行文件时,链接器需要全局命名空间中名为main
的函数。您已将函数放在命名空间而不是全局命名空间中,因此链接器将无法找到它。
因此,要么将main
移到sp
命名空间之外,要么告诉链接器函数所在的位置(至少可以使用MS链接器,但不确定如何使用g ++)。< / p>
答案 1 :(得分:2)
namespace sp {
int main() {
return 0;
}
}
声明sp::main
函数,而不是main
。这使您没有main
函数作为程序入口点。
解决方案:从sp
命名空间中删除main。
int main() {
return 0;
}