2017-04-09 3 views
0

私はC++に新しい(これは簡単な方法ですが、Java開発者でした)と私はいくつかのグラフとグラフをプロットする必要があるアプリケーションを作成する必要があります。これを行うには、MathGLライブラリを使用します。そして、私はそれを使用するために自分でコンパイルする必要があることを知りました。これは私が最後の数日間やろうとしていることです...ウィンドウ上でmathglを構築する

私はMinGWとCLion IDEでWindowsを使用しています。 MathGLのソースコードをフォルダに展開し、CLionでフォルダを開くことから始めました。 次に、zlibとlibpngのソースコードをダウンロードし、MathGLプロジェクトのINCLUDE_DIR変数をそれぞれのフォルダに設定し、PNG_PNG_LIBRARYをpng32に設定しました。

In file included from [...]\mathgl-2.3.5.1\src\data_png.cpp:22:0: 
[...]/libpng-1.6.29/png.h:361:27: fatal error: pnglibconf.h: No such file or directory 
compilation terminated. 
mingw32-make.exe[2]: *** [src/CMakeFiles/mgl.dir/data_png.cpp.obj] Error 1 
mingw32-make.exe[2]: *** Waiting for unfinished jobs.... 
src\CMakeFiles\mgl.dir\build.make:465: recipe for target 'src/CMakeFiles/mgl.dir/data_png.cpp.obj' failed 
mingw32-make.exe[2]: Leaving directory '[..]/mathgl-2.3.5.1/cmake-build-debug' 
mingw32-make.exe[1]: *** [src/CMakeFiles/mgl.dir/all] Error 2 
mingw32-make.exe: *** [all] Error 2 
CMakeFiles\Makefile2:89: recipe for target 'src/CMakeFiles/mgl.dir/all' failed 
mingw32-make.exe[1]: Leaving directory '[...]/mathgl-2.3.5.1/cmake-build-debug' 
Makefile:129: recipe for target 'all' failed 

EDIT:私はそれは私に次のエラーを与えるCLion経由mgl_exampleをコンパイルしようとすると、私はlibpngのソースコードのscriptsディレクトリから構築済みpnglibconf.hをコピーして、最初のエラーを修正するために管理しました。その後、MinGWヘッダーのrpcndr.hのバイトの定義はoPRCFile.ccbyte(double)メソッドと干渉しているようですが、これはメソッドをbyteNに変更し、マクロ(#define byte(c) byteN(c))から呼び出すことで修正しました。これは正しい方法ではないかもしれませんが、動作します。

しかし、リンカーがすべて固定されていると、間違って設定されているようです:cannot find -lpng32と言います。私はそれをどのように修正できますか?

編集:さて、それはコンパイルされました。だから私はlibmgl.aをコピーして、プロジェクトに入れました。私はそれを使いたいのです。私はtarget_link_libraries(Test ${CMAKE_SOURCE_DIR}/libmgl.a)を呼び出すことによって、cmakeのと、それに対してリンクされますが(私はprocompiledバイナリを使用した場合と同じ)それだけでundefined reference toエラーの束をスロー:

MakeFiles\Test.dir/objects.a(main.cpp.obj): In function `ZN8mglDataAC2Ev': 
c:/mingw/include/mgl2/abstract.h:156: undefined reference to `_imp___ZTV8mglDataA' 
CMakeFiles\Test.dir/objects.a(main.cpp.obj): In function `ZN8mglDataAD2Ev': 
c:/mingw/include/mgl2/abstract.h:157: undefined reference to `_imp___ZTV8mglDataA' 
[...] 

答えて

0

その不足しているヘッダファイルは、libpngのためのconfigureを実行した後に生成されるように見えます(Windowsの下では、あなたができないかもしれないし、自分自身を生成する必要があるかもしれません - >Cannot open include file: 'pnglibconf.h':No such file or directory

それ以外に、あなたはそれを使用するためにゼロからそれを構築する必要があるという印象をどうやって得ましたか?プリコンパイルされたバイナリをダウンロードし、プログラム(http://mathgl.sourceforge.net/doc_en/Installation.html - ポイント2)とリンクすることもできます。

編集:あなたの編集を見ると、リンカにはライブラリファイルがある場所があると仮定して、実際のライブラリファイルをWindowsで指定する必要があります(おそらくpng32.aやlibpngコンパイルの行に沿って何かがあります) (http://www.mingw.org/wiki/specify_the_libraries_for_the_linker_to_use参照)

+0

ありがとうございます。私はその記事を編集した。そして、プリコンパイルされたバイナリを使うことは可能かもしれませんが、後でいつでも役に立つかもしれないので、私はまだこれを動作させたいと思います。 – aquaatic

+0

本当に、私は学習経験としては悪くないと思いますが、使用する予定のライブラリによっては、コンパイルされたバイナリに依存していると、 nixシステム。 – user2047610

+0

さて、私はそれをもう一度試してみます(プリコンパイルされたバイナリは実際には必要なものを含んでいるので) - 編集しました。私はMinGWフォルダにすべてを置いて、 'target_link_libraries(Test libmgl.a)'を使って私の.exeをリンクして、定義されていない参照エラーを投げつけるだけです。 – aquaatic

関連する問題