Linux 上的 FreeImage 返回 -1 格式
FreeImage on Linux returns -1 format
我是Ubuntu 16.04 LTS的快乐用户。不久前,我尝试从FreeImage的sourceforge页面构建FreeImage。后来我完全卸载了它,并从apt-get安装了相同的版本
sudo apt-get install libfreeimage3
命令。 虽然,问题是一样的。我在Linux版本的Mono中使用FreeImage,尽管即使C++代码仍然存在问题。 假设我们有主.cpp文件,其中包含如下代码:
#include <FreeImage.h>
#include <iostream>
using namespace std;
int main()
{
FreeImage_Initialise();
FREE_IMAGE_FORMAT format = FreeImage_GetFIFFromFilenameU(L"/home/nikys/1.jpg");
cout << format << endl;
FreeImage_DeInitialise();
}
像这样编译后(在类似"apt-get"的安装之后,我将库的链接添加到/usr/lib,以便可以找到它):
g++ -I. -c main.cpp -o main.o -lc -lfreeimage
g++ main.o -o main -lc -lfreeimage
我收到 .exr 和 .jpg 文件的结果"-1"。
问题是,我在 Windows for .NET 上有 FreeImage 库,它为相同的对象返回正确的格式(Linux Mono 上的相同代码,与上述共享对象链接,也给了我"-1",没有任何 DllNotFoundException 或 EntryPointNotFound)。 可能出了什么问题?请求信息,因为我肯定忘记提及男人的重要信息。
UPD1:如果我使用
FREE_IMAGE_FORMAT format = FreeImage_GetFIFFromFilename("/home/nikys/1.jpg");
或
FREE_IMAGE_FORMAT format = FreeImage_GetFileType("/home/nikys/1.jpg");
我很高兴,像正常人一样拥有"2"。 虽然,对于宽字符串或FreeImage_GetFileTypeU,不是FreeImage_GetFIFFromFilenameU告诉我正确的结果。:(
Linux 用于文件和输入 UTF8 编码,而不是宽字符串。
为了使您的代码在不同的操作系统中工作,您需要用#if defined(OS1)...#else...
将一些命令括起来,或者使用多操作系统API,如Qt或wxWidgets。
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 为什么 std::p ut_time(std::gmtime 采用 %z 格式返回 +0100 表示 UTC?
- 需要将 sprintf 格式加倍并返回太长的字符串
- 我想将字符串转换为 Json 格式并返回字符串向量作为答案
- Linux 上的 FreeImage 返回 -1 格式
- 图像的像素格式始终返回 32 位
- 'fopen'返回格式错误的'fp'
- 如何用clang格式分隔lambda的尾部返回类型
- 设置返回指向包含类的指针的函数的格式
- WMI 以不同的格式返回信息
- 导致IWICBitmapFrameEncode::SetPixelFormat返回与请求的格式不同的格式的原因
- 使clang格式允许函数在自己的行上返回类型
- 用于测试 func(args) 格式是否正确以及是否具有必需的返回类型的特征
- Visual Studio c++代码格式-返回类型+ classname::func缩进
- fmod音频.setMusicSpeed返回不支持的格式错误
- 以字符串形式返回整数值以进行日期格式设置