2016-08-17 4 views
0

У меня все еще возникают проблемы с текущим проектом, который просто не будет компилироваться. Я сузил его до Includes, но не могу понять, что происходит. Я прочитал, что мне нужно добавить точку входа WinMain, но это не добавляет - у меня есть одноклассники, которые вообще не сталкивались с этой ошибкой. Таким образом, я создал новый пустой проект:Простой проект не будет компилироваться

#include <cstdlib> //include c library 

    //using namespace std; 
    //using namespace cv; 

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

со следующими включает в себя:

Под GCC C++ Compiler Включает:

C:\Users\Amit\Desktop\opencv\build\include 
    C:\opencv_contrib-3.0.0\modules\xfeatures2d\include 

Под MinGW Linker библиотеки C++:

libopencv_core310 
    libopencv_imgcodecs310 
    libopencv_imgproc310 
    libopencv_xfeatures2d310 
    libopencv_features2d310 
    libopencv_highgui310 

Under 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 `[email protected]' 
    collect2.exe: error: ld returned 1 exit status 

    09:45:43 Build Finished (took 396ms) 

Может кто-нибудь спасти меня?

Thanks, Amit.

+1

Где вы определяете точку входа: * global * (не в пространстве имен) 'main()' function или 'WinMain' функция? – MikeCAT

+6

'main()' должен находиться в глобальном пространстве имен. –

+0

Главное не может находиться в пространстве имен, потому что оно должно быть глобальным (для того, чтобы операционная система вызывала его). – Wernerson

ответ

2

При создании исполняемого файла компоновщик ожидает функцию с именем main в глобальном пространстве имен. Вы разместили функцию внутри пространства имен вместо глобального пространства имен, чтобы компоновщик не нашел его.

Так что либо переместите свой main за пределы пространства имен sp, либо сообщите компоновщику, где находится функция (по крайней мере, это возможно с MS-компоновщиком, но не уверен, как это делается с g ++).

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

объявляет какую sp::main функции, не main. Это оставляет вас без функции main, чтобы служить точкой входа в программу.

Решение: Удалить основное из пространства имен sp.

int main() { 
    return 0; 
} 
Смежные вопросы