简单的项目不会编译

时间:2016-08-17 07:16:30

标签: c++ winmain

我仍然遇到一个无法编译的正在进行的项目的问题。我已将其缩小到包含但无法弄清楚发生了什么。我已经读过我需要添加一个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)

有人可以救我吗?

谢谢, 阿米特。

2 个答案:

答案 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;
}