0

私は最近、Visual Studio 2010 Express から NetBeans を使用するように切り替えました。適切にコンパイルするには多少の調整が必要でしたが、レイアウトとシンプルさにすでに非常に感銘を受けています。ただし、別の問題があります。ブーストも機能するかどうかをテストしたとき、ファイルboost/signals.hppをmain.cppに含め、プロジェクトオプションの追加のライブラリディレクトリに移動し、ブーストインストールのlibディレクトリを追加しました。私はビジュアルスタジオでやります。このすべての後、とにかく未定義の参照がたくさんあります。

私は msys で mingw コンパイラを使用していますが、違いがある場合はバージョン 1.47 をブーストしています。Visual Studio を使用している場合、このブーストの同じインストールが正常に機能することを確認できます。

ビルドログはこちら。

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory m`/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/syncopate5.exe
make[2]: Entering directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
mkdir -p dist/Debug/MinGW-Windows
g++.exe     -o dist/Debug/MinGW-Windows/syncopate5 build/Debug/MinGW-Windows/main.o -L/C/Program\ Files\ \(x86\)/boost/boost_1_47/lib 
build/Debug/MinGW-Windows/main.o: In function `ZN5boost7signal0IvNS_10last_valueIvEEiSt4lessIiENS_8functionIFvvEEEED2Ev':
C:\Users\me\Documents\NetBeansProjects\Syncopate5\Syncopate5/../../../../../../Program Files (x86)/boost/boost_1_47/boost/signals/signal_template.hpp:139: undefined reference to `boost::signals::trackable::~trackable()'
C:\Users\me\Documents\NetBeansProjects\Syncopate5\Syncopate5/../../../../../../Program Files (x86)/boost/boost_1_47/boost/signals/signal_template.hpp:139: undefined reference to `boost::signals::detail::signal_base::~signal_base()'
make[2]: Leaving directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
C:\Users\me\Documents\NetBeansProjects\Syncopate5\Syncopate5/../../../../../../Program Files (x86)/boost/boost_1_47/boost/signals/signal_template.hpp:139: undefined reference to `boost::signals::detail::signal_base::~signal_base()'
make[1]: Leaving directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
build/Debug/MinGW-Windows/main.o: In function `ZN5boost7signal0IvNS_10last_valueIvEEiSt4lessIiENS_8functionIFvvEEEEC2ERKS2_RKS4_':
C:\Users\me\Documents\NetBeansProjects\Syncopate5\Syncopate5/../../../../../../Program Files (x86)/boost/boost_1_47/boost/signals/signal_template.hpp:197: undefined reference to `boost::signals::detail::signal_base::signal_base(boost::function2<bool, boost::signals::detail::stored_group, boost::signals::detail::stored_group> const&, boost::any const&)'
C:\Users\me\Documents\NetBeansProjects\Syncopate5\Syncopate5/../../../../../../Program Files (x86)/boost/boost_1_47/boost/signals/signal_template.hpp:197: undefined reference to `boost::signals::detail::signal_base::~signal_base()'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [dist/Debug/MinGW-Windows/syncopate5.exe] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

編集:

プロジェクト プロパティの [ライブラリの追加] ダイアログから必要な lib ファイルを手動で追加しようとすると、このエラーが発生します。

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/syncopate5.exe
make[2]: Entering directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
make[2]: *** No rule to make target `../../../../../../Program Files \(x86\)/boost/boost_1_47/lib/libboost_signals-vc100-mt-1_47.lib', needed by `dist/Debug/MinGW-Windows/syncopate5.exe'.  Stop.
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
make[2]: Leaving directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
make[1]: Leaving directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'

BUILD FAILED (exit value 2, total time: 9s)
4

2 に答える 2

1

これは、プロジェクトをどのように構築したかによって異なります。

既存のmakefileからプロジェクトをビルドした場合は、ライブラリパスとライブラリがビルド環境に存在する必要があります。

ソース、インクルード、およびライブラリを個別に細かく分割してプロジェクトを手動でビルドした場合は、必要なライブラリを明示的に追加する必要があります。

具体的には、更新されたビルドログを見ると、必要なライブラリをリンクしておらず、代わりに何らかの方法でターゲットとして追加されているようです。

プロジェクトを右クリックし、に移動します。タブPropertiesの下で、を参照してください。ここで、リンクパスと動的/静的ライブラリを指定する必要があります。BuildLinker

于 2013-02-08T12:12:38.597 に答える
0

何時間もグーグルと読書をした後、私はブーストについてもう少し発見し、ついに私の問題を見つけて理解しました。私が最初にboostのインストールを取得したとき、それはすべてのヘッダーのみのオブジェクトと、vc++のみのプリコンパイル済みバイナリを含むBoostProからのものでした。最新バージョンのboostを取得し、boost.buildを使用してライブラリのgccバージョンを作成し、それらに対してリンクした後、問題なく動作しました。私の本質的に欠陥のある質問に答えてくれたTylerJandreauとJoachimPileborgに感謝します:。

于 2013-02-09T03:05:56.307 に答える