简单项目无法编译

Simple project won't compile

本文关键字:编译 项目 简单      更新时间:2023-10-16

我仍在处理一个无法编译的项目。我已经把它缩小到Includes,但不知道发生了什么。我读到我需要添加一个WinMain入口点,但这加不起来——我的同学根本没有遇到这个该死的错误。所以我创建了一个新的空项目:

    #include <cstdlib> //include c library
    //using namespace std;
    //using namespace cv;
    namespace sp {
    int main() {
        return 0;
    }
    }

包括以下内容:

GCC C++编译器下包括:

    C:UsersAmitDesktopopencvbuildinclude
    C:opencv_contrib-3.0.0modulesxfeatures2dinclude

在MinGW C++链接库下:

    libopencv_core310
    libopencv_imgcodecs310
    libopencv_imgproc310
    libopencv_xfeatures2d310
    libopencv_features2d310
    libopencv_highgui310

在MinGW C++链接库下搜索路径:

    C:UsersAmitDesktopopencvbuildx86mingwlib

尽管如此,在没有调用这些库中的任何函数的情况下,我还是得到了以下错误:

    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)

有人能救我吗?

谢谢,阿米特。

创建可执行文件时,链接器需要在全局命名空间中使用名为main的函数。您已将函数放置在命名空间而不是全局命名空间中,因此链接器找不到它。

因此,将main移到sp命名空间之外,或者告诉链接器函数在哪里(至少MS链接器可以这样做,但不确定g++是如何做到的(。

namespace sp {
    int main() {
        return 0;
    }
}

声明了一个sp::main函数,而不是main。这样就没有main函数作为程序的入口点。

解决方案:从sp命名空间中删除main。

int main() {
    return 0;
}