2016-08-25 4 views
0

.libや.dllのようなコンパイルされたライブラリを使わずに、opencvライブラリのC++ソースコードで作業できるかどうか聞いてみたいと思います。C++ライブラリのソースコード(opencv)を使って作業する

つまり、ライブラリのヘッダーファイルと.cppファイルのみで作業することは可能ですか?

イメージを受け取り、一連のopencv関連の操作を実行する基本的なC++クラスを作成したいと思いますが、私はネイティブライブラリとして多くのプラットフォームのコードを自由にコンパイルする必要があります.libまたは.dllを使用すると、いくつかのプラットフォームのコンパイルが禁止されます)。私は、C++ソースコードのみを使用することで可能になると思います。しかし、ビジュアルスタジオを使用して追加のインクルードディレクトリを追加すると、私はLNK2019のエラーを受け取ります。おそらく "関数または変数は宣言されていますが、定義されていません" .hppと.cppの '正しい' 。

+4

希望するプラットフォーム用のソースコードとビルドライブラリをダウンロードしてから、同じものを組み込んでプロジェクトを再構築することができます – slawekwin

答えて

0

これはネイティブコードの典型的なケースです。あなたがする必要があるのは、ソースコードをダウンロードすることです(私はあなたがすでにそれをしていると信じています)。

プロジェクトでは、結果ライブラリ(スタティックlibまたはダイナミックdllファイル)を、事前にコンパイルしたものと同じように含めます。この方法では、ライブラリファイルは個別に保存され、プロジェクトのすべてのビルドではなく、一度しかビルドされません。

Visual Studioでは、すべての設定でインクルードパスを個別に設定できるため、現在のアーキテクチャ用に構築されたライブラリを使用するようにプロジェクトを設定できます。

0

@slawekwinが上記のコメントに書いたことに加えて、ビルドシステムの 部分にビルドと ターゲットプラットフォームへの依存関係を自動化することもできます。

前にOpenCVをビルドしていたのなら、CMakeを訪れているはずです。 CMake external projects(EP)を設定することができます。 サードパーティプロジェクトのソースコードをダウンロードしてから、設定、ビルド、 をインストールしてインストールします。これはgithub repositoryからコピーされたOpenCVのための例です:

ExternalProject_Add(opencv 
    GIT_REPOSITORY ${git_protocol}://code.opencv.org/opencv.git 
    GIT_TAG 2.3.1 
    SOURCE_DIR opencv 
    BINARY_DIR opencv-build 
    UPDATE_COMMAND "" 
    PATCH_COMMAND "" 
    CMAKE_GENERATOR ${gen} 
    CMAKE_ARGS 
    ${ep_common_args} 
    -DBUILD_DOCS:BOOL=OFF 
    -DBUILD_EXAMPLES:BOOL=OFF 
    -DBUILD_NEW_PYTHON_SUPPORT:BOOL=OFF 
    -DBUILD_PACKAGE:BOOL=OFF 
    -DBUILD_SHARED_LIBS:BOOL=ON 
    -DBUILD_TESTS:BOOL=OFF 
# -DCMAKE_BUILD_TYPE:STRING=Release 
    -DWITH_FFMPEG:BOOL=OFF 
    -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL 
) 

set(OPENCV_ROOT_DIR ${CMAKE_BINARY_DIR}/INSTALL) 
set(OPENCV_DIR ${CMAKE_BINARY_DIR}/INSTALL) 

また、C++のための マネージャはCMakeのEPに基づいてhunterを、と呼ばれるクロスプラットフォームのパッケージを見てみると面白いかもしれません。