c++ - 一般 C++ Linux 到 Windows 移植问题

标签 c++ windows visual-studio g++ porting

背景:一个基于网络的服务(tcp+udp,而不是http)存在于一个即将公开发布的C++ linux 客户端 API。此客户端 API 使用普通的 tcp 套接字、udp 套接字、C++ 命名空间和部分 STL,如 std::mapstd::vector,并将作为一个集合发布头文件和要链接的 .a.lib 文件。

问题:刚开始研究如何将此 C++ 客户端 API 移植到 Windows。在 Windows 下使用 gcc/g++ 有意义吗?我的第一个想法是这行不通,因为 Windows 上的开发人员通常使用 Microsoft Visual Studio 套件,并且他们无法链接到 gcc 生成的库。这是一个正确的假设,还是 gcc 提供了一些漂亮的开关来生成 Microsoft 编译器和 Microsoft 链接器兼容的输出文件?

最佳答案

我建议将公共(public) API 设为标准 C,因为 C++ 库甚至不能跨 Windows 上的不同编译器移植。如果需要 C++,请在 C API 之上构建一个小型 C++ 包装器,并将包装器源与您的库一起分发。

如果您想要纯 C++ API,并且不想为每个编译器构建一个版本(或仅分发 Visual C++ 库),则可以分发源代码。取决于分发源是否可以接受...

关于c++ - 一般 C++ Linux 到 Windows 移植问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4476735/

相关文章:

c++ - Winsock 速率限制

windows - PowerShell 中的复制项;不支持给定路径的格式

c# - 如何使用 C# 从 Windows 服务访问 Linux 目录/文件

python - 如何在 Windows 中设置 PYTHONPATH?

visual-studio - Visual Studio 继续运行旧版本

c++ - 如何禁用特定包含文件的警告?

c++ - C++ 中的嵌套/递归类

c++ - 数组大小模板推导

c# - 为什么 System.Configuration 程序集默认不包含在新项目中?

visual-studio - Visual Studio 2019 的 SSDT?