問題タブ [mathgl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ の MathGl でファイルが見つからない: 致命的なエラー
mathgl をインストールしようとしている時間ですが、多くの問題が発生しています。
mgl2/mgl.hをインクルードするだけで簡単な C++ プログラムをコンパイルしようとしましたが、エラーが発生しました。
致命的なエラーが発生します: ' mgl2 /mgl.h' file not found。
brew でインストールしようとしましたが、単一のフォルダーをダウンロードしてusr/local/include内に配置しようとしましたが、それでも機能しません。
これらのエラーが発生することなく、クリーンにインストールするにはどうすればよいですか?
c++ - mathGl / MinGW 未定義参照 Netbeans IDE
以下のコードをコンパイルしようとしています:
私はNetbeans IDE、Win 10 64xを使用しています....しかし、このエラーが発生し続けます:
あなたの助けに感謝。
cd 'C:\Users\SAQERpc\Documents\NetBeansProjects\Plotting' C:\MinGW\msys\1.0\bin\make.exe -f Makefile CONF=Debug "/C/MinGW/msys/1.0/bin/make.exe " -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf make.exe[1]: Entering directory /c/Users/SAQERpc/Documents/NetBeansProjects/Plotting'
"/C/MinGW/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/plotting.exe
make.exe[2]: Entering directory
/c/Users/SAQERpc/Documents/NetBeansProjects/Plotting' mkdir -p build/Debug/MinGW-Windows rm -f "ビルド/デバッグ/MinGW-Windows/main.od" g++ -c -g -MMD -MP -MF "ビルド/デバッグ/MinGW-Windows/main.od" -o ビルド/デバッグ/MinGW-Windows/ main.o main.cpp mkdir -p dist/Debug/MinGW-Windows g++ -o dist/Debug/MinGW-Windows/plotting build/Debug/MinGW-Windows/main.o -lmgl build/Debug/MinGW-Windows/main .o: 関数ZN8mglGraphC1Eiii':
c:/mingw/include/mgl2/mgl.h:39: undefined reference to
_imp___ZTV8mglGraph' 内 c:/mingw/include/mgl2/mgl.h:42: _imp__mgl_create_graph_gl'
c:/mingw/include/mgl2/mgl.h:48: undefined reference to
_imp__mgl_create_graph'への未定義の参照build/Debug/MinGW-Windows/main.o: 関数内ZN8mglGraphD1Ev':
c:/mingw/include/mgl2/mgl.h:53: undefined reference to
_imp___ZTV8mglGraph' c:/mingw/include/mgl2/mgl.h:53: _imp__mgl_delete_graph への未定義の参照_imp__mgl_use_graph'
c:/mingw/include/mgl2/mgl.h:53: undefined reference to
' build/Debug/MinGW-Windows/main.o: 関数ZN8mglGraph11SetFontSizeEd':
c:/mingw/include/mgl2/mgl.h:122: undefined reference to
内 _imp__mgl_set_font_size' build/Debug/MinGW-Windows/main.o:関数ZN8mglGraph10WriteFrameEPKcS1_':
c:/mingw/include/mgl2/mgl.h:399: undefined reference to
_imp__mgl_write_frame' build/Debug/MinGW-Windows/main.o: 関数ZN8mglGraph5FPlotEPKcS1_S1_':
c:/mingw/include/mgl2/mgl.h:1973: undefined reference to
_imp__mgl_fplot' collect2.exe: エラー: ld が 1 終了ステータスを返しました make.exe[2]: * [dist/Debug/MinGW-Windows/plotting. exe] エラー 1 make.exe[2]: ディレクトリ/c/Users/SAQERpc/Documents/NetBeansProjects/Plotting'
make.exe[1]: *** [.build-conf] Error 2
make.exe[1]: Leaving directory
/c/Users/SAQERpc/Documents/NetBeansProjects/Plotting' make.exe を離れています": * [.build-impl] エラー 2
BUILD FAILED (終了値 2、合計時間: 2 秒)
c++ - 添付されたライブラリを検索する前に、関数/クラス定義をローカルで検索する方法は? (リンカー C++)
私の観察: C++ リンカ (具体的には Visual Studio) は __declspec(dllimport) を真剣に受け止めます。リンカは、添付されたライブラリのみで、このディレクティブで宣言されたクラス/関数の定義を検索します。(ローカルに存在する定義を無視します)。__declspec(dllimport) ディレクティブの優先順位を下げて、リンカーが他の場所を探す前にローカルに存在する定義を最初に考慮するようにしたいと考えています。そうすることは可能ですか?また、Windows 固有/Visual Studio 固有の問題ですか? もしそうなら、回避策はありますか?
Windows の Visual Studio 2015 でコンパイル済みの MathGL-v2.4.2 バイナリを使用しようとしたときに、この問題が発生しました。
最初のビルドで多くのリンカー エラー 2019: unresolved external symbol __declspec(dllimport) _cdel mglGraph::mglGraph(void).... 何とか何とかが発生しました。
さらに、ライブラリ コードを調べて、すべてのクラスと構造体の定義が次の形式であることを確認しました。
MGL_EXPORT が次のように定義されている場合、
また、libmgl.dll Exported Symbols を調べましたが、リンカーが探しているシンボルが存在しません (したがって、当然、リンカーは未解決のシンボル エラーを返します)。
上記のすべてから、結論: リンカーはクラス/関数のローカル定義を無視し、__declspec(dllimport) ディレクティブで宣言されたクラス/関数の関数定義の添付ライブラリのみを検索します。
さらなる証拠: 完全に定義された関数/クラスの定義から MGL_EXPORT を削除すると、コードがコンパイルされます
質問は次のとおりです。これはプラットフォーム固有の問題ですか? はいの場合、回避策はありますか?(MGL_EXPORT ディレクティブを削除する前に、すべての関数が完全に定義されていることを確認するために、ライブラリ内のすべてのクラスを注意深く調べるのは非常に面倒です)。
「__declspec(dllimport) ディレクティブの優先度を下げて、リンカーが他の場所を探す前にローカルに存在する定義を最初に考慮するようにしたい」 これは非常にエレガントに問題を解決します。
c - C の基本的な MathGL の例がコンパイルされない
ドキュメントの基本的な c の例を次に示します。
コンパイル出力の開始は次のとおりです。
この例は有効なcでさえなく、sample()関数へのパラメーター(実際には使用されていない)が欠落していることは明らかです。削除しようとしましたが、まだ最初の (内部 mathgl) エラーが発生します。
続行する方法はありますか?