0

関数のリストを含む so ファイルがあり、ライブラリのこれらの関数を使用する C++ プログラムを作成したいと考えています。

私は試しました: g++ -Llibname.so xxx.cpp とライブラリ .so の LD_LIBRARY_PATH 環境変数を設定しましたが、それでも関数が見つからないなどのエラーが表示されます。

ライブラリを使用して C++ プログラムをコンパイルするためのアイデアを教えてください。

どうもありがとう!

#include <iostream>
#include <signal.hpp>
using namespace std;

int main() {
    cout << "!!!Hello World!!!" << endl;
    processData("/home/radwan/2011-07-22Field1/", 0,
                    4500, 1,
                    100, 70,
                    90, 8,
                    100,1.8);
    return 0;
}

ヘッダー ファイルの宣言:

 int processData(char const * directory, int const minimumSignalLevel,
        int const maximumSignalLevel, int const samplingFactor,
        int const minimumTrackDimension, int const minimumMissingVineStocksDimension,
        int const maximumMissingVineStocksDimension, int const maximumFoliageHoleDimension,
        int const cellSide4Average,float const & FRF_R_threshold_Value);
4

3 に答える 3

0

LD_LIBRARY_PATHファイルの実行時の検索を支援するために使用され.soます。実行可能ファイルの一部のパスをハードコーディングすることもできます。とにかく、コンパイル行の一般的な形式は次のとおりです。

g++ -Lライブラリが存在するディレクトリ-llib 接頭辞または .so 拡張子を除いた名前` xxx.cpp -o xxx

于 2013-06-04T08:47:18.690 に答える
0

ライブラリとオブジェクト ファイルの順序が重要な場合があることに注意してください。私は最近同様の問題を抱えていましたが、解決策はリンカーコマンドラインでライブラリスイッチを並べ替えることでした。

ここを見て、これが問題であるかどうかを確認できます: xerces を使用して DLL をリンクすると、未定義のシンボルが生成されます

于 2013-06-04T09:04:30.763 に答える