1

私はCmakeファイルに以下を持っています:

add_library(stasm STATIC IMPORTED)
set_property(TARGET stasm PROPERTY
            IMPORTED_LOCATION /media/Data/sdks/stasm3.1/linux/libstasm.a)
target_link_libraries( StasmOpencvExample ${OpenCV_LIBS} stasm)

次のようにして libstasm.a を生成しました。

g++ で静的ライブラリを作成するには? 、最初の答え、linux フォルダーからすべての .o ファイルを取得し、アーカイブに入れます。

しかし、プロジェクトでmakeを実行すると、次のようになります:

Scanning dependencies of target StasmOpencvExample
[100%] Building CXX object CMakeFiles/StasmOpencvExample.dir/stasm_opencv_example.cpp.o
Linking CXX executable StasmOpencvExample
CMakeFiles/StasmOpencvExample.dir/stasm_opencv_example.cpp.o: In function `main':
stasm_opencv_example.cpp:(.text+0x9a): undefined reference to `AsmSearchDll(int*, int*,      char const*, char const*, int, int, int, char const*, char const*)'
collect2: ld returned 1 exit status

Linuxでstasmを使用するためのcmakeプロジェクトを以前に取得した人はいますか? また、stasm_dll.cpp からインクルード "windows.h" を削除する必要があり、Linux での作業を許可するために適切に実行されなかったその他の Windows 固有のコードも削除する必要がありました。

バイナリを生成するための linux フォルダーを既に取得しており、うまく機能しています。あとは、この機能を自分のプロジェクトに組み込むだけです。

4

1 に答える 1

0

その理由は、画像処理を行う Windows で実行可能ファイルを作成するために Stasm が作成されたためであると思われます。Stasm はライブラリのようには機能しません。現在、ランダム プロジェクトにインポートしてパラメータを指定するために使用できるライブラリのように機能する独自の静的および共有ライブラリを作成しています。

基本的にmain.cppを別のクラスに変更し、テスト/不要なコードを取り出して、薄い処理バージョンを取得します。

于 2012-12-06T18:38:53.527 に答える