2017/03/07

[c/c++]static libraryで非static関数を隠すのは無理そうだ

2017/03/11 続編
[c/c++]static libraryでAPIを隠すのにもvisibility("hidden")が使えそう

ソースファイルが長くなってきたので、ファイル分割した。
長いと、スクロールするのが面倒なのでね。

そこまではよかったのだが、ファイル間で使いたい関数があった。
その関数は後悔するようなものではないのだが、ファイル間なので公開しないと使えない。
名前ルールで、いかにも公開してなさそうな名前にしても良いが、今後も出てくると思うので、コンパイラ依存で良いから解決できるのならやっておきたい。

 

こういうときは、オライリーのBinary Hacksだろうと眺めると、#29に載っていた。
載っていたのだが・・・これはshared libraryでのやり方だ。
__attribute__((visibility("hidden")))というやり方も書いてあったのだが、arでオブジェクトをまとめるだけではさすがに使えない。

まあねぇ。。。
リンクしないと、"hidden"といわれても、やってよいかどうかわからないだろう。

 

こちらに、詳しく説明があった。

http://stackoverflow.com/questions/22244428/hiding-symbol-names-in-library

うん、ダメなものはダメ、ということだ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。