我有一个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