私は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.cc
のbyte(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'
[...]
ありがとうございます。私はその記事を編集した。そして、プリコンパイルされたバイナリを使うことは可能かもしれませんが、後でいつでも役に立つかもしれないので、私はまだこれを動作させたいと思います。 – aquaatic
本当に、私は学習経験としては悪くないと思いますが、使用する予定のライブラリによっては、コンパイルされたバイナリに依存していると、 nixシステム。 – user2047610
さて、私はそれをもう一度試してみます(プリコンパイルされたバイナリは実際には必要なものを含んでいるので) - 編集しました。私はMinGWフォルダにすべてを置いて、 'target_link_libraries(Test libmgl.a)'を使って私の.exeをリンクして、定義されていない参照エラーを投げつけるだけです。 – aquaatic