16

OpevCVのいくつかの関数を使用するEclipse CDTにC++プロジェクトがあり、実行可能ファイルにコンパイルされて正常に動作します。ここで、最初のプロジェクトで定義された関数のいくつかを使用する新しい C++ プロジェクトが必要です。2つをコンパイルしてリンクすることはできません。

新しいプロジェクトの関連ファイルに#include "..."、古いプロジェクトを新しいプロジェクトの参照プロジェクトに追加し、新しいプロジェクトのビルド設定で、古いプロジェクトのソース フォルダーをインクルードとして追加しました。 ( -Igcc オプション)。

役に立つ場合に備えて、Eclipse のスクリーンショットを添付しました。

ここに画像の説明を入力

コンパイラによって表示されるエラーは次のとおりです。

ビルド ターゲット: OtherProject 呼び出し
: GCC C++ リンカ
g++ -o "OtherProject" ./src/foo.o
./src/foo.o: 関数 `main' 内:
/home/max/opencvjni/OtherProject/Debug/../ src/foo.cpp:13: 未定義のしきい値への参照'
collect2: ld が 1 の終了ステータスを返しました
make: *** [OtherProject] エラー 1

スクリーンショットの他のタブにある他のファイルのコードは次のとおりです。

しきい値.cpp

#include <cv.h>
#include <highgui.h>
#include "Threshold.h"

using namespace cv;

int threshold(void) {
   Mat img = imread("/home/max/opencvjni/monalisa.jpg", 0);
   threshold(img, img, 127, 255, THRESH_BINARY);
   imwrite("/home/max/opencvjni/monathresh.jpg", img);
   return 0;
}

int main(void) {
  threshold();
  return 0;
}

しきい値.h

#ifndef THRESHOLD_H_
#define THRESHOLD_H_

int threshold(void);

#endif /* THRESHOLD_H_ */[/code]
  • エクリプスのバージョン: 3.7.2
  • CDT バージョン: 8.0.2.201202111925
  • OS: Ubuntu 12.04

私の投稿をご覧いただきありがとうございます。これを行う方法がない場合、または別の方法で行う方が賢明な場合は、遠慮なくそう言ってください。

よろしく

4

4 に答える 4

17

私も答えを探していましたが、以前の答えでは問題は解決しませんでした。(ニックの答えは役に立ちました)。2 つのことを定義する必要があります。

  1. に進みProject->Properties->C/C++ general->Paths and Symbolsます。Source Locationタブを選択してをクリックしLink Folder...、含めるフォルダを選択します。
  2. に進みProject->Properties->C/C++ general->Paths and Symbolsます。タブを選択しIncludesます。左側のメニューで正しい言語 (例: GNU C++) を選択していることを確認し、 をクリックAdd...してから、含めるフォルダーを選択します。

注:必要かどうかはわかりませんが、外部プロジェクトを作成したときに、新しいプロジェクト ウィザードで [共有ライブラリ] オプションを選択しました。

すべてが正常に完了したことを確認するには、次の場所に移動します: Project->Properties->C/C++ Build->Settings。を選択し、 「- L/your_folder_name」が含まれGCC C++ Linkerていることを確認します。All optionsこれを繰り返しGCC C++ Compilerます。

于 2013-12-26T23:38:14.150 に答える
7

Project->Properties->C/C++ general->Paths and Symbols に移動します。[ソースの場所] タブを選択し、[フォルダをリンク...] ボタンをクリックします。参照するプロジェクトを含むディレクトリを選択できるはずです。そのプロジェクトのすべてのソース ファイルが現在のプロジェクトに含まれます。とにかく私のために働く。

于 2013-11-26T20:20:52.997 に答える
-1

個人的には、CMake でビルド オプションを指定するのが好きです。CMake プロジェクトは、Eclipse CDT にインポートすることもできます。CMake を使用すると、Linux でメイク ファイル プロジェクトを生成できますが、Windows で VS プロジェクトを生成することもできます。OpenCV の Web サイトには、CMake での使用方法の例も示されています。

于 2012-11-05T23:50:51.180 に答える