gpt4 book ai didi

c++ - 适用于 VC++ 2008、2005 客户端的 VC++ 2010 SDK

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:56:33 27 4
gpt4 key购买 nike

我想用Visual C++ 2010写SDK,VC++ 2010客户端可以用,VC++老版本客户端也可以用。比方说,我想让它与 2005 和 2008 版本兼容。 SDK 包含几个 h、lib 和 dll 文件。库已导出 C++ 类和全局函数。公共(public) SDK 接口(interface)(h 文件)不包含任何在以前的 VC++ 版本中不支持的功能。内部 SDK 实现可能包含此类功能(如 Lambda 表达式、右值引用等)。

一些公共(public)SDK方法有回调接口(interface)参数。回调接口(interface)在我的 h 文件中定义,在客户端代码中实现并传递给我的方法。这会是个问题吗?

我做了几个小测试,发现它有效。有谁知道用旧 VC++ 版本编写的 C++ 客户端使用 VC++ 2010 SDK 有什么问题吗?

最佳答案

主要原则:

  • 您不能公开标准 C++ 库中的任何对象(std::string 等),它们的布局不兼容
  • 你不能使用异常,SEH 没问题
  • 您不能返回任何需要客户端代码释放指向资源的指针
  • 您应该使用/MT 进行构建,这样客户就不会为查找所需的 CRT 版本而头疼
  • 您通常可以接受 2003 年到 2010 年之间的对象布局,只要您可以确保它不受/Zp 以外的编译器设置的影响。虚拟继承一直很麻烦。无论选择何种配置,验证 sizeof 是否产生相同的大小。

COM 是确保最大兼容性的好方法。

关于c++ - 适用于 VC++ 2008、2005 客户端的 VC++ 2010 SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014738/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com