Linux上的FreeImage返回-1格式

时间:2017-06-15 15:13:37

标签: c++ linux freeimage

我很高兴Ubuntu 16.04 LTS的用户。不久前,我已经尝试过从FreeImage的sourceforge page构建FreeImage。后来我完全卸载了它并从apt-get by

安装了相同的版本
sudo apt-get install libfreeimage3

命令。 虽然,问题是一样的。我在Linux版本的Mono中使用FreeImage,尽管问题仍然存在于C ++代码中。 假设我们在 main.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();
}

在编译之后(在&#34; apt-get&#34; -like install之后我将库的链接添加到/ usr / lib,所以可以找到它):

g++ -I. -c main.cpp -o main.o -lc -lfreeimage
g++ main.o -o main -lc -lfreeimage

我收到的结果&#34; -1&#34;用于.exr和.jpg文件。

事情是,我在Windows for .NET上有FreeImage库,它返回相同对象的正确格式(Linux Mono上的相同代码,与上述共享对象链接,给我&#34; -1&#34;没有任何DllNotFoundException或EntryPointNotFound)。 什么可能出错?请求信息,因为我肯定忘了提到人的重要信息。

UPD1: 如果我使用

FREE_IMAGE_FORMAT format = FreeImage_GetFIFFromFilename("/home/nikys/1.jpg");

FREE_IMAGE_FORMAT format = FreeImage_GetFileType("/home/nikys/1.jpg");

我很高兴并且有&#34; 2&#34;正常人会有。 虽然,对于宽字符串和FreeImage_GetFileTypeU,不是FreeImage_GetFIFFromFilenameU告诉我正确的结果。 :(

1 个答案:

答案 0 :(得分:1)

Linux用于文件和输入UTF8编码,而不是宽字符串。

要使您的代码在不同的操作系统中运行,您需要使用#if defined(OS1)...#else...包含一些命令,或者使用QOS或wxWidgets之类的multiOS API。