【发布时间】:2018-10-04 23:56:35
【问题描述】:
在我们的一个 C++ 解决方案中,我们使用了第三部分库。这些库与 VS 2013 兼容。现在我们正在将我们的解决方案迁移到 VS 2017,发现某些 3rd 方库没有与 VS 2017 兼容的版本。
所以我们尝试在 VS20173 中使用一些与 VS2013 兼容的库,并且尝试过的 API 调用工作正常。
我可以假设这些库与 VS 2017 可执行文件一起使用没有任何问题吗?
【问题讨论】:
-
C++ 库的答案是否定的。 C 库可能会起作用。我会等待有人证明我错了。
-
API 导出为函数而不是 C++ 类
-
如果它们导出 C 风格的 API,那么它们是兼容的。请注意,“C 样式 API”不仅意味着“API 被导出为函数而不是 C++ 类”,而是所有函数都是“外部 C”,仅使用 C 类型作为参数/返回值而不是抛出。
-
@VTT 不,一般来说不是。它们具有不同的运行时 DLL,如果您在使用 VC++2017 编译的应用程序中创建类似 FILE* 的简单内容并将其传递给旧库,则无法保证它会正常工作。
-
只是添加到其他一些 cmets:注意内存管理。您不能使用一种运行时支持进行分配并在另一种运行时支持中取消分配。
标签: c++ visual-studio visual-studio-2013 visual-studio-2017