CMake と MinGW を使用して Windows 用のlibzint (バーコード ジェネレーター)をコンパイルしようとしています。目的は、Visual Studio の依存関係を回避することです。生成された .dll ファイルにエクスポートされたシンボルが多すぎることを除いて、すべて正常に実行されます。ZBarcode_* 関数のみを使用する必要がありますが、実際には、変数/定数として宣言されているほとんどすべてがエクスポートされます (結果の .dll ファイルにはバージョン情報がありません。これは奇妙だと思います)。
これが私が仕事をした方法です:
- D:\Projects\Zint の github リポジトリからの git clone
- C:\CMake にインストールされた cmake
- C:\MinGW に mingw をインストール
- cmake-gui を起動し、D:\Projects\Zint を参照
- 「構成」をクリックし、リストで「MinGW Makefiles」を選択し、「ネイティブコンパイラを指定」し、次に c:\mingw\bin\mingw32-gcc.exe へのフルパスを指定しました (確かに...)
- 「構成」をクリックしました。成功しましたが、依存関係が満たされていないため、いくつかの変数を赤で追加しました(PNGとQTは必要ありませんが、zintはそれらがなくても問題ありません)
- 「構成」をもう一度クリックすると、すべてが白くなりました
- 「生成」をクリック
- cmake-guiを閉じました
- コンソールプロンプトを開始しました
- パス変数環境を C:\mingw\bin のみにオーバーライドしました
- 「D:\Projects\Zint」に移動し、「mingw32-make」を実行してから「mingw32-make install」を実行しました
- libzint.dll と zint.exe は「C:\Program Files\zint-package\bin」にデプロイされました。
エクスポートされた関数を調べるためにDependency Walkerを使用したところ、いくつかの ZBarcode_* 関数に加えて、約 400 の他のシンボルもあり、ソース コードを考えると、これらのシンボルは実際には libzint の定数、配列、およびその他の内部構造であることがわかりました。 .
これらすべてのエクスポートを回避するために設定または微調整する方法を知っていますか?
よろしくお願いします。