2016-07-08 5 views
-2

私は共有ライブラリを使用しようとしていますが、今まで運がありませんでした。 LIBがlibORB_SLAM2.soと呼ばれてから、コードをコンパイルします:とにかくC++に共有ライブラリを含めるには? libORB_SLAM

https://github.com/MathewDenny/ORB_SLAM2

私は自分のプロジェクト(ちょうどこの単一のファイル)中の実施例フォルダからmono_tumコードをコピーしなかったと を試してみました共有ライブラリを使ってコンパイルするだけです。 "System.h"が見つかりません。 誰かがチャイムすることができますか?

ありがとうございます!

編集:OS:ubuntu 12.04 gcc 4.6、私は以下のリンカコマンドを使用しました: gcc -L/home/user/Desktop/program/libs/lib -Wall -std = C++ 11 -o test mono_tum.cc -lORB_SLAM2.so 致命的なエラー:System.h:そのようなファイルまたはディレクトリがありません コンパイルが終了しました。あなたは

error: System.h: No such file or directory compilation terminated. 

ここで何を得るSystem.hはgithubのリンクをチェックするために

(フォルダを含める)

+1

ご使用のOS環境、[MCVE]、および使用したリンカコマンドを入力してください。 'System.h'は標準のC++ヘッダーではありません。 –

+0

私はいくつかの情報を追加しました!私はそれが十分であることを願っています。ソースコードに関しては、より大きなライブラリであるので、全体を投稿するのは意味がありません。したがって私はリンクを投稿していました。 – luke

答えて

1

は、コンパイラのエラーではなく、リンカエラーです。

#include<System.h> 

あなたは、リポジトリの「インクルード」ディレクトリ内のファイルを見つけることができます:それは、コンパイラがmono_turn.ccのライン29に含まれるファイル「System.h」を、見つけることができないことを示しています。コンパイラにもどこにそれを見つけるか教えてください。次に、あなたがライブラリを検索するようにリンカーに伝えるどこライブラリが(ファイル名はlibORB_SLAM2.soである)であることを確認する必要があり、あなたが

gcc ... L/home/user/Desktop/program/libs/lib 

ので

で、すでにこれを行う

gcc ... -I/path/to/your/repository/clone/Include ... 

のようなものを使用します

ls L/home/user/Desktop/program/libs/lib/libORB_SLAM2.so 

は、有効なlsリストを出力する必要があります。慣例により、libの接頭辞と接尾辞.soがリンカに渡されていない、ということに注意してください、そう

ので
gcc ... -lORB_SLAM2 

にあなたのgccのフラグを変更、私は

でプロジェクトをコンパイルしようと思い、次のステップとして、
gcc -L/home/user/Desktop/program/libs/lib -I/path/to/your/repository/clone/Include -Wall -std=c++11 -o test mono_tum.cc -lORB_SLAM2 
+0

すべての努力に感謝します!今働いている。 – luke

+0

よろしくお願いします。よろしいですか? – yussuf

関連する問題