1

我正在尝试将 Google 的 Gumbo 解析器包装为柯南包。我已经成功地支持了 Linux Mac 和 Windows,但是我在创建(和使用)它作为 Windows 中的共享库(.dll + .lib)时遇到了一些问题。

我目前的进度在这里。我决定绕过 Gumbo 的 autoconf 构建系统,提供一个 CMakeLists.txt,我在获取源代码时复制它。这样我希望也能完全支持Windows。

我对 Visual C++ 不是很熟悉,但据我了解,Visual C++ 与其他编译器的不同之处在于它默认不导出符号,而 Gcc 和 Clang 会导出所有内容。

这导致我的柯南包在某些情况下无法构建,因为在共享模式下它只是生成一个 .dll(并且没有相应的 .lib)。

尝试使用 CMake 的 GENERATE_EXPORT_HEADER 模块,但它没有什么帮助,因为那时我必须实际使用它在应该导出的方法中生成的宏。但我只是想包装图书馆而不必分叉和调整它。

另一种选择是使用.def 文件。这可能在这种情况下有效(导出的符号不多),但它对我没有多大帮助(如果我真的导出了我应该拥有的所有东西,更难测试,更难维护,对解决同样的问题没有太大帮助其他需要导出更多符号的情况)。

有推荐的方法吗?

4

0 回答 0