用于VC++2008、2005客户端的VC++2010 SDK
VC++ 2010 SDK for VC++ 2008, 2005 clients
我想使用Visual C++2010编写SDK,它可以被VC++2010客户端使用,也可以被旧的VC++版本客户端使用。比方说,我想让它兼容2005和2008版本。SDK包含几个h、lib和dll文件。库已导出C++类和全局函数。公共SDK接口(h-files)不包含任何以前的VC++版本不支持的功能。内部SDK实现可能包含这样的功能(如Lambda表达式、右值引用等)
一些公共SDK方法具有回调接口参数。回调接口在我的h文件中定义,在客户端代码中实现,并传递给我的方法。这会是个问题吗?
我做了几个小测试,发现它有效。有人知道C++客户端使用旧版本的VC++编写的VC++2010 SDK有什么问题吗?
关键原则:
- 您不能公开标准C++库(std::string等)中的任何对象,它们的布局不兼容
- 不能使用例外,SEH可以
- 不能返回任何需要客户端代码来释放指向的资源的指针
- 您应该使用/MT进行构建,这样客户端就不会在挖掘所需的CRT版本时头疼
- 从2003年到2010年,只要您能确保对象布局不受除/Zp之外的编译器设置的影响,您通常可以使用对象布局。虚拟继承一直很麻烦。验证sizeof在不考虑所选配置的情况下产生的大小是否相同
COM是确保最大兼容性的好方法。
相关文章:
- 双线程应用比单线程应用慢 C++ (VC++ 2010 Express).如何解决?
- 在VC 2010上使用SSL的libpq
- 区分 VC++ 2010 和更高版本的编译器版本
- VC++2010:显示打开的对话框挂起
- VC++ 2010:从 VC6++ 转换后显示打开对话框时出错
- 旧版 MFC 代码 (2005) 无法在 VC 2010 上编译
- 刷新MFC接口VC++2010
- 在VC++2008项目中使用VC++2010运行库
- C++程序是在VC++2010中编译的,而不是在Visual C++6.0中编译的
- VC++ 2010 "array is not a member of std"错误
- boost::bind 在 VC++ 2010 中绑定引发异常的函数时不起作用
- VC++2010搜索某个字符串的列表视图
- vc++2010/2012:std::包含unique_ptr编译器错误的结构的向量
- VC 2010可执行文件未在其他计算机上运行-无错误
- 这是VC++ 2010中的错误吗?
- 在 VC++ 2010 中使用个人静态库
- 为什么VC++ 2010 Express在这个程序中不需要stdio.h,而gcc++需要?
- 在 VC++ 2010 中传入常量向量
- 如何在KeyEventArgs中同时处理两个函数.VC++2010.
- 用于VC++2008、2005客户端的VC++2010 SDK