c++ - WIN 中的相同 DevIL 项目在 Ubuntu 中失败
问题描述
通过在 Linux 中使用DevIL,函数ilCopyPixels()总是返回 false,而它在 Windows 中可以正常工作。我正在尝试使用库操作输入图像,它确实工作正常,但是当我尝试在 ubuntu 中使用 g++ 编译它时没有机会,例如:
g++ main.cpp PictureOperation.h PictureOperation.cpp StopWatch.h StopWatch.cpp -std=gnu++11 -lIL
我没有收到错误,因此它也可以正常编译,但在这种情况下,来自 DevIL 的函数 ilCopyPixels 返回 false。这是我的“PictureOperation”类的初始化函数:
bool PictureOperation::Init(){
ilInit(); // init DevIL
ILuint tmp = ilGenImage();
ilBindImage(tmp);
ilLoadImage(reinterpret_cast<const char *>(mInput.c_str()));
// image-information
mHeight = ilGetInteger(IL_IMAGE_HEIGHT);
mWidth = ilGetInteger(IL_IMAGE_WIDTH);
// copy into a buffer
assert(mPicOld == nullptr);
mPicOld = new ILubyte[mHeight*mWidth];
ILuint res = ilCopyPixels(0, 0, 0, mWidth, mHeight, 1, IL_COLOR_INDEX, IL_UNSIGNED_BYTE, mPicOld);
return res; // returns true if copying was successful
}
所以最后看来我的g ++和devil配置效果不佳..希望有任何解决方案。
此外:
PictureOperation::PictureOperation(std::string const& inputFile, std::string const& outputFile, const int mask[SIZE_OF_MATRIX][SIZE_OF_MATRIX]){
// initialization of the members
mPicOld = nullptr;
mHeight = 0;
mWidth = 0;
mInput = inputFile;
mOutput = outputFile;
for (int y = 0; y < SIZE_OF_MATRIX; ++y) {
for (int x = 0; x < SIZE_OF_MATRIX; ++x) {
mFilterMask[y][x] = mask[y][x];
}
}
}
解决方案
推荐阅读
- javascript - 在 java 脚本中从嵌套的 n 级数组/JSON 对象中搜索对象
- java - Java中的连接池和线程池设置
- matlab - Matlab中函数的向量化
- list - Ocaml:如何从列表中删除所有重复的元素?
- ios - 自定义 UITabBarController - DidSelect/AnyCustomization 委托问题
- java - 如何在不创建新数组或使用 ArrayLists 的情况下从数组中删除元素?爪哇
- mysql - 在 python 中使用 pythonanywhere 的 MySQL DB
- ionic-framework - _blank 不适用于 iOS 13 或更高版本
- rust - 如何将文件创建时间转换为整数?
- angular - 动态导入表达式在 Angular 8 中不起作用