文書化されたAPI関数専用のパブリックシンボルを持つWindows静的ライブラリを作成したいと思います。他のすべてのシンボルを削除します。
これは*NIXライブラリーにとっては簡単です。strip(1)
ユーティリティを使用してを指定--keep-symbol=foo
できます。また、シンボルのリスト全体をファイルに入れてファイルを指定することもできます。
Windowsライブラリでこれを行うにはどうすればよいですか?
もう少し詳しく説明します。ライブラリを作成していて、複数の.Cファイルから構築されているとします。
util.c
util_foo()
関数とを定義しますutil_bar()
。 math.c
を定義しますsome_math_func()
。次に、関数とをlib.c
定義します。API関数はユーティリティ関数と数学関数を呼び出すため、これらの関数を静的に宣言しないでください。各.cファイルをコンパイルすると、パブリックシンボルがオブジェクトファイルに含まれ、オブジェクトファイルをリンクしてライブラリを作成すると、リンカはすべてのパブリックシンボルを表示したままにします。リンカが静的ライブラリを作成したら、シンボルと表示のみが必要です。api_func_0()
api_func_1()
api_func_0
api_func_1