私はC++で書かれたライブラリを持っています。 LGPLのライセンスのために、私は自社のソフトウェアをダイナミックリンケージ(スタティックリンケージは正常に動作します)でしか使用できません。だから、私はDLLにそれを構築する必要があります。ただし、ライブラリは非常に大きく、何もエクスポートしません(したがって、クラスおよびグローバル関数名の前に.defファイルと__declspec(dllexport)のステートメントはありません)。だから、DLLをビルドすると、エクスポートされた名前がないので無駄です。したがって、リンクされません。 私たちの会社では、デフォルトで に名前をエクスポートしないMS Visual C++を使用しています(WindowsではMINGW経由で実行されるGNU GCCなど)。ですから、私が現在使用している唯一のオプションは、私が使用している(そして何千もある)ライブラリのすべての名前の前に__declspec(dllexport)を置くか、それらの名前の.defファイルを書くことです。しかし、私がそれをしても、次のバージョンのライブラリ、 を使用することはできません。私はこの仕事をもう一度やる必要があります。私はこれらのエクスポートを行う、または.mapファイルを生成するツールを探していましたが、実際にこの特定のタスクを実行するものはありません (いくつかのDEFジェネレータがありますが、ほとんどの場合DUMPBIN/EXPORTの結果を検索します) 。私は今2日間ウェブの回答を探していたが、良い結果は得られなかった。DLLで使用されるC++ソースの名前を自動的にエクスポートする方法
敬具、 アンドリー
.MAPファイルを置き換え使用して?私はVSが.mapファイルを生成できると思います。 – fefe
可能な複製:http://stackoverflow.com/questions/225432/export-all-symbols-when-creating-a-dll – Asaf
LGPLではライブラリを静的にリンクすることはできませんか?それは私の理解ではありません。 (1つは、ダイナミックリンクが発明される前にLGPLが発明されたのではないのですか?) –