C++ 在imread中,又有一个字母导致访问冲突

C++ 在imread中,又有一个字母导致访问冲突,c++,opencv,visual-c++-2008,C++,Opencv,Visual C++ 2008,出于某种原因,此代码在第二次imread时生成访问冲突,但在第一次imread时不会 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main(int argc, char **argv) { Mat mat1, mat2; char imgname1[255]="cise_StackD.tif"; m

出于某种原因,此代码在第二次imread时生成访问冲突,但在第一次imread时不会

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

int main(int argc, char **argv)
{
    Mat mat1, mat2;

    char imgname1[255]="cise_StackD.tif";
    mat1 = imread( imgname1, CV_LOAD_IMAGE_GRAYSCALE); 

    char imgname2[255]="ecise_StackD.tif";
    mat2 = imread( imgname2, CV_LOAD_IMAGE_GRAYSCALE); 

    return 0;
}
#包括
#包括
使用名称空间cv;
int main(int argc,字符**argv)
{
mat1、mat2;
char imgname1[255]=“cise_StackD.tif”;
mat1=imread(imgname1,CV\U LOAD\U IMAGE\U灰度);
char imgname2[255]=“ecise_StackD.tif”;
mat2=imread(imgname2,CV\U LOAD\U IMAGE\U灰度);
返回0;
}
确切的运行时错误消息是:“MLMVNroThrust.exe中0x61f437ef(msvcr100d.dll)处的未处理异常:0xC0000005:访问冲突读取位置0xCCCC。”具有相同可见项目设置的相同代码在另一台PC上可接受地运行。图像是相同的副本

我正在使用OpenCV 2.4.3预构建的二进制文件;这些项目也是为了使用CUDA而设置的,但是为了隔离这个问题,我去掉了所有的CUDA代码

是什么造成了这种访问冲突?我如何消除它

谢谢。< /p> ,这发生在使用VisualC++ 2008时,OpenCV路径为2010(OpenCVAV AV设置为“%opencvvOrth%\x86”vc10)。

我已经在我的实验室PC上修正了这个问题(OpenCVAV现在设置为“% opcvv%RONTRON\x86”VC9),它是用Visual C++ 2010建立的,供先前研究者使用。


感谢所有回应的人

它实际上是文件名中的额外字母吗?如果您将这两个调用交换到
imread
,是否是第一个调用抛出?不知何故,我觉得这似乎不太可能。SO上的一些其他人发现使用发行版库可能会有所帮助:你能把文件发布到某个地方,让我们可以试试吗?消除char数组,并将图像名称字符串直接粘贴到函数调用中。文件可用吗?尝试使用fopen打开文件,只是为了查看它们是否存在于运行它的工作目录中。VisualStudio有一个坏习惯,就是将源文件夹用作工作目录,而不是实际的exe文件所在的位置。我在调试中使用过这种代码,没有问题。@us2012-事实上,如果我交换调用顺序,第一个调用将抛出。@Gustavo Litovsky,直接使用图像名称仍然会导致冲突。我确保两个名字下都有图像,并且加载的副本可以正常显示。但即使目录中没有任何名称下的图像,行为也不会改变。