我正在尝试使用 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 的其他内部结构.
您知道如何配置或调整事物以避免所有这些导出吗?
非常感谢您的帮助,问候。