#include <iostream>
#include <atlimage.h>
using namespace std;
void locate(CImage img, int i, int j)
{
img.GetPixelAddress(i, j);
};
int main()
{
CImage img;
img.Load(_T("./1.png"));
locate(img, 0, 0);
//img.GetPixelAddress(0, 0);
unsigned char * p = (unsigned char *)(img.GetPixelAddress(0, 0));
cout <<*p << endl;//give me a runtime error
return 0;
}
Это дает мне ошибку времени выполнения. Я использую vs2015 для окон.Копирование CImage приводит к ошибке времени выполнения
#include <iostream>
#include <atlimage.h>
using namespace std;
void locate(CImage img, int i, int j)
{
img.GetPixelAddress(i, j);
};
int main()
{
CImage img;
img.Load(_T("./1.png"));
//locate(img, 0, 0);
img.GetPixelAddress(0, 0);
unsigned char * p = (unsigned char *)(img.GetPixelAddress(0, 0));
cout <<*p << endl;//works fine
return 0;
}
Это скомпилируется, но выглядит в основном так же, как и код выше. Я просто заменяю часть функции локации кодами, которые фактически выполняются. Это ошибка компилятора?
Вы не проверять, если был загружен образ. – drescherjm
В вашем вопросе нет ничего, что подсказывает потенциальную ошибку компилятора. У меня есть подлый взгляд, что «CImage» не нравится копировать по значению. Попробуйте объявить первый параметр 'locate()' как «CImage & img». –
Если бы у меня был доллар за каждый раз, когда noob обвинял проблемы, которые у них возникали в ошибках компилятора, я мог уйти в отставку. – duffymo