我可以在 C++11 中创建静态库并从 C++03 调用它吗?
如果我创建一个与 C++03 兼容的标头,并使用相同的编译器 (g++),这会起作用吗?
If I create a C++03-compatible header, and use the same compiler (g++), will this work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一般来说,是的。一旦模块被编译,接口往往是最重要的部分。
不过,可能存在 ABI 问题,具体取决于名称修改或类似内容是否发生变化。如果您可以将它用作共享库,那么您也很有可能静态地使用它。
然而,更重要的是标准库版本。这些很可能会发生变化,因此应不惜一切代价避免在两者之间传递 std 对象。
In general, yes. Once a module is compiled, the interface tends to be the most important part.
There may be ABI issues, though, depending on whether name mangling or anything like that changed. If you can use it as a shared library, there's a decent chance you can use it statically as well.
More important, however, is standard library versions. Those very likely changed, so passing std objects between the two should be avoided at all costs.