電子書籍の厳選無料作品が豊富!

LINUXのGCCで,共有ライブラリを作成しようとしています。

ライブラリとして提供する関数の中で,エリアを new しているものがあるのですが,こうして作成したライブラリ(mytest.so.1.0)をアプリケーションから dlopen() で開こうとすると,
 Error of dlopen() : ./mytest.so.1.0: undefined symbol: _Znwj
となってしまいます。

この _Znwj というのがよくわからないのですが,nmコマンドでmytest.so.1.0
の情報を表示してみると,
    :
 00001e18 A _DYNAMIC
 00001dcc A _GLOBAL_OFFSET_TABLE_
  U _Znwj
 00001dc0 ? __CTOR_END__
 00001dbc ? __CTOR_LIST__
    :
となっており,確かに“未定義”として _Znwj というのが表示されます。

共有ライブラリの中で new を使用する場合は,なにか注意点などあるのでしょうか。
たとえば,コンパイルオプションでなにかを指定するとか・・

C/C++系の質問コーナーに発言するほうが良いのかもしれませんが,LINUX特有のことなので,こちらに質問しました。
ご存知の方,教えてください。

A 回答 (1件)

_Znwj は /usr/lib/libstdc++.so.3 の中にあると思いますが、どうでしょう?


そっちを先に開いておけば良いように思いますが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!