2012-01-03 2 views
1

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

敬具、 アンドリー

+0

.MAPファイルを置き換え使用して?私はVSが.mapファイルを生成できると思います。 – fefe

+0

可能な複製:http://stackoverflow.com/questions/225432/export-all-symbols-when-creating-a-dll – Asaf

+0

LGPLではライブラリを静的にリンクすることはできませんか?それは私の理解ではありません。 (1つは、ダイナミックリンクが発明される前にLGPLが発明されたのではないのですか?) –

答えて

1

IANALしかし、ライブラリがLPGLであれば、彼らは、動的リンクに開いている必要があります。

ダイナミックライブラリを生成してメンテナから承認される方法を与えるために、ソースファイルを変更してMakefileを更新することを検討しましたか?彼らはそれに開放され、将来のバージョンはちょうどうまくいくでしょう。

+0

あなたの答えをありがとう。まあ、彼らは動的リンクにオープンしています。しかし、彼らはLinux向けの文章執筆者であり(ライブラリは数値モデリングのためのものです)、輸出声明の追加を承認したとしても、Linuxでは必要ないので、輸出声明を維持する意欲はありません。 – user1128000

0

私はあなたが望むようなオートメーションがあるとは思わない。

私の提案は、あなたが言ったようにソースコードを編集しています。メモ帳++のマクロを使用するか、パイオニア

よろしく

関連する問題