Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将VS 2015构建dll链接到VS 2012应用程序_C++_Visual Studio 2012_Visual Studio 2015_Compatibility_Binary Compatibility - Fatal编程技术网

C++ 将VS 2015构建dll链接到VS 2012应用程序

C++ 将VS 2015构建dll链接到VS 2012应用程序,c++,visual-studio-2012,visual-studio-2015,compatibility,binary-compatibility,C++,Visual Studio 2012,Visual Studio 2015,Compatibility,Binary Compatibility,我已经将使用visual studio 2015构建的一组dll链接到visual studio 2012应用程序,奇怪的是,我没有看到任何链接器问题,我能够执行这些dll提供的API。 这种方法会有什么问题吗?为什么我没有遇到二进制兼容性问题?触发UB非常容易,但情况未必如此。标准示例是您链接的操作系统DLL,它们不关心您使用的VS版本。它们设计得很好,以避免UB。基本规则是避免在一个模块中分配内存并在另一个模块中销毁的情况,避免C++模板对象和异常,避免共享CRT状态类似ErNO。很容易触发

我已经将使用visual studio 2015构建的一组dll链接到visual studio 2012应用程序,奇怪的是,我没有看到任何链接器问题,我能够执行这些dll提供的API。
这种方法会有什么问题吗?为什么我没有遇到二进制兼容性问题?

触发UB非常容易,但情况未必如此。标准示例是您链接的操作系统DLL,它们不关心您使用的VS版本。它们设计得很好,以避免UB。基本规则是避免在一个模块中分配内存并在另一个模块中销毁的情况,避免C++模板对象和异常,避免共享CRT状态类似ErNO。很容易触发UB的含义:未定义的行为,这是坏的。想一想,VS2012不再创建私有堆,这对解决内存分配问题有很大帮助?您尝试过所有API了吗?@doctorlove通过一些API调用初始化dll中存在的框架,并传递一个文件,该文件将被遍历并返回一组对象。我还没有试过所有的API