0

これは、Tizen Studio で開発された Tizen プロジェクト用です。

すべて同じ名前空間にあるいくつかの c++ クラスを実装するライブラリ (.so) を開発しました。私が今持っている質問は、lib 内のクラスにどのようにアクセスするかです。

簡単な例:

mylibclasses.cpp:

namespace myspace{
class EXPORT_API myclass{
public:
   myclass(){};
   ~myclass(){};

   void myfunc(){};

}
}

EXPORT_APIは、tizen ライブラリによって次のように定義されています__attribute__((__visibility__("default")))。(これは、Tizen Studio が C 関数をエクスポートするために使用するものです)。これ (myclasses.so) を正常にビルドしました。

main.cpp については、次のようなことをしたいと思います。

// using namespace myspace;
int main(int argc, char** argv){
   extern class myclass   c(); // this makes linker look for "myclass"
   c.foo();
}

C では、エクスポートされた各関数の前方宣言ステートメントを含むヘッダー ファイル (main.h) がありました。C ++とクラスでそれを行うにはどうすればよいですか?

編集:コンパイラは名前空間を認識しないため、namespace を使用して削除されました。myclass の宣言型にextern クラスを追加しました。

Tizen Studio の [Project Properties] -> [Settings] -> [C++ Linker] -> [Libraries] で、「-l」 <libname.so> と「-L」を libname.so へのパスに追加しました。しかし、実際のリンカー コマンド ラインでは、「-l<libname.so>」が「-L」の前に置かれます。リンカーは、lib パス (-L) を設定する前に、"libname.so" (-l) を検索します。そのため、リンカは libname.so を見つけられません。しかし、この順序を切り替える設定を取得できません。

Tizen Studio の経験が豊富な人はいますか?

4

0 に答える 0