如何正确混合调试和发布涉及std :: string的二进制文件?

时间:2019-04-27 11:22:50

标签: c++ compiler-optimization

我有一个c ++项目,我想将它与调试二进制文件一起使用,但我也想在调试中使用它的依赖项,而不是在发行版中使用。

问题是这似乎是不可能的,尤其是当我将std::string & var作为函数参数时,出现诸如以下的内存错误: 尝试访问字符串时,Microsoft C++ exception: std::length_error at memory location 0x000000F2111AEE20

在某些情况下,要求编译器不进行任何内联会有帮助,但有时对于特定的数据(图像)而言,这是不够的。

如何实现此目标,即使用发布库进行调试,而无需重写依赖项或库? (我想继续使用string,而不是char*左右。)


复制:使用VS2017或VS2019的工具集v141。在发行版中使用OpenImageIO,在调试中使用项目。

#include <OpenImageIO/imageio.h>

int main()
{
    auto in = ImageInput::open("SomeImageFile.DPX"); // std::length_error 
    if (in) {
        printf ("Opened successfully, format is %s\n", in->format_name());
    } else {
        printf ("Fail\n");
        return 1;
    }
    return 0;
}

库OpenImageIO源:https://github.com/OpenImageIO/oiio

图片样本:https://1drv.ms/u/s!AlUmbfQiLoTZhFOpmgFMMVKtgCOk

0 个答案:

没有答案