0

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

    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)

谁能救我?

谢谢,阿米特。

4

2 回答 2

2

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

因此,要么将您main的名称移出sp命名空间,要么告诉链接器函数在哪里(至少 MS 链接器可以做到这一点,但不确定 g++ 是如何完成的)。

于 2016-08-17T07:25:17.107 回答
2
namespace sp {
    int main() {
        return 0;
    }
}

声明一个sp::main函数,而不是main. 这使您没有main用作程序入口点的函数。

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

int main() {
    return 0;
}
于 2016-08-17T07:25:29.987 回答