我们目前正在为某个库构建API。 部分接口需要库来获取并返回用户类,例如vector和string。
当尝试在简单场景中模拟库的使用时,在调试模式下,系统会在将字符串作为输入时粉碎。
我相信在调试或发布模式下字符串类有不同的表示形式。然后我们的图书馆假定接收某个表示,不正确地读取数据成员并沿途碾碎。 那么在API中传输STL对象的最佳方法是什么呢? 目标操作系统是使用MSVC 8编译的Windows XP,尽管库用户将使用他们的编译器可能(并且可能会)不同的Windows 我们到目前为止的想法:
答案 0 :(得分:7)
让人们在调试模式下与调试链接并在发布模式下发布并不是不合理的。这就是几乎每个图书馆都能做到的。甚至像DirectX这样的大型项目都会发布调试其二进制文件的编译。 #3是一个非常合理的选择/解决方案。
答案 1 :(得分:6)
您应该避免在不同的二进制模块之间传递STL对象。
对于字符串,您必须依赖const char*
作为只读参数,char*, <buffer size>
作为输入参数...
对于向量,可能会有点困难,特别是如果你必须改变向量的内容......
关于您的想法: