2016-08-17 6 views
0

まだコンパイルされない進行中のプロジェクトにはまだ問題があります。私はIncludesに絞り込んだが、何が起こっているのか理解できない。私はWinMainのエントリーポイントを追加する必要があると読んだが、それは追加されません - 私はクラスメートは、このたわごとエラーにまったく遭遇していません。 は、だから私は、新しい空のプロジェクトを作成しました:以下のものを単純なプロジェクトはコンパイルされません

#include <cstdlib> //include c library 

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

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

が含まれています。GCC C++コンパイラの下で

に含まれるもの:MinGWのC++リンカライブラリの下

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

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

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

誰も私を救うことはできますか?

ありがとう、 Amit。

+1

ここで、エントリポイントを定義しますか?*グローバル*(名前空間ではない) 'main()'関数または 'WinMain'関数ですか? – MikeCAT

+6

'main()'はグローバル名前空間に存在しなければなりません。 –

+0

メインはネームスペースに含めることができません。ネームスペースはグローバル(OSが呼び出すために)でなければならないためです。 – Wernerson

答えて

2

実行可能ファイルを作成すると、リンカーはグローバル名前空間にmainという名前の関数を想定しています。リンカーがそれを見つけられないように、グローバル名前空間ではなく名前空間内に関数を配置しました。

mainspの名前空間の外に移動するか、関数がどこにあるかリンカーに教えてください(少なくともMSリンカーでは可能ですが、g ++でどのように行われているかはわかりません)。

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

sp::main機能、ないmainを宣言します。これにより、プログラムエントリポイントとして機能するmain機能を持たないままになります。

解決方法:sp名前空間からmainを削除してください。

int main() { 
    return 0; 
} 
関連する問題