2016-04-15 13 views
0

私のmain source codeでは、findConst()という名前の関数を定義しました。同じソースで、を使用して共有オブジェクト(.so)をロードしています。dlopen() et dlsym()このshared objectLinuxのダイナミクスリンカー:.soオブジェクトからメインプロセスの関数を呼び出す方法?

、私はfindConst()を使用していくつかのコードを持っている...しかし、私は私のprogyを実行すると、残念ながら、私は、ルックアップエラーを得た:私はこの問題を解決するために行う必要がありますどのような ./Selene: symbol lookup error: ./SelDirectFB.so: undefined symbol: findConst

?あなたはそれを行うことはできませんし、あなたがそうするように成功した場合はいけない

おかげ

+1

これを行う必要があるのは、ほとんどの場合、デザインが不良であることを示しています。しかし、実際には、[動的にロードされた共有ライブラリからメインプログラムの関数を呼び出す方法](http://stackoverflow.com/questions/17081131/how-to-call-a-function-ダイナミックロード共有ライブラリからのメインプログラム) – kaylum

+0

私が見つけられなかったこの他の質問を私に指摘してくれてありがとう:-Wl、 - export-dynamicは動作させる。しかし、それは貧しいデザインと考えていますか?目標はいくつかのツール間で共有されたライブラリを作成することではなく、ここでの目標は特定のプログラム専用のプラグインを作成することです。ツールが実行されているシステムによっては、DirectFBの使用をオプションにするだけです。 – destroyedlolo

答えて

1

。反対の作業を行い、共有オブジェクトにfindConst()を定義し、それをメインプログラムのdlsym()でロードします。

さらに、メインプログラムを共有オブジェクトにリンクし、関数を直接呼び出してください。

関連する問題