我正在处理代码:: blocks 10.05,我想在c / c ++中读取TIFF图像文件。为此,我使用LibTiff库,因此将tiffio.h作为头文件包含在内。现在,当我编译时,我得到一个错误“进程以状态1终止。而且我还为链接程序提供了库的完整路径。
整个构建日志显示:
链接控制台可执行文件:bin \ Release \ tifff.exe
mingw32-g ++。exe:E:\ Image:没有这样的文件或目录
mingw32-g ++。exe:Transforms \ Libraries \ tifflib \ libs \ libtiff:没有此类文件或目录
进程以状态1(0分钟8秒)终止
0错误,0警告
最佳答案
给定您提供的输出,就像@gcbenison所说的那样,链接器似乎找不到libtiff。
而且,鉴于它显示了两行输出,我想您的libtiff库位于“ E:\ Image Transforms \ Libraries \ tifflib \ libs \ libtiff”里面,对吗?
好吧,Code :: Blocks doesn't seem to like路径带有空格。因此,尝试将“ Image Transforms”重命名为“ Image_Transforms”,更正Code :: Blocks中的库路径,然后重试。
编辑:详细说明了答案
此外,请确保已编译libtiff库。我从libtiff 3.8.2-1.exe项目下载了GNUwin32进行测试,它运行正常。尝试执行以下操作来构建使用libtiff的最低限度工作程序:
在C:\ GnuWin32中安装上述libtiff库。安装后,您将在其中包含许多目录,其中包括bin,contrib,doc,include,lib等。
在Code :: Blocks中创建一个新的Console应用程序项目;
Tell Code :: Blocks是一个C程序;
创建项目后,通过单击项目,然后单击“构建选项...”来访问“构建选项”对话框。
在“链接器设置”选项卡的“链接库”框架中,单击“添加”,然后添加libtiff.dll.a。如果在C:\ GnuWin32中安装了libtiff,则所需的库将是C:\ GnuWin32 \ lib \ libtiff.dll.a;
在“搜索目录”选项卡中,您将:
选择“编译器”选项卡,并向其中添加“ C:\ GnuWin32 \ include”;
选择“链接器”选项卡,然后向其中添加“ C:\ GnuWin32 \ lib”;
单击“构建选项”对话框中的“确定”,因为现在一切正常。
您现在可以尝试构建程序,看看构建是否成功。我将Graphics programming with libtiff, Part 2中的第一个示例用作测试程序:
#include <stdio.h>
#include <stdlib.h>
#include <tiffio.h>
int main()
{
TIFF *output;
uint32 width, height;
char *raster;
printf("Trying to write TIFF...\n");
if((output = TIFFOpen("output.tif", "w")) == NULL){
fprintf(stderr, "Could not open outgoing image\n");
exit(42);
}
width = 42;
height = 42;
if((raster = (char *) malloc(sizeof(char) * width * height * 3)) == NULL){
fprintf(stderr, "Could not allocate enough memory\n");
exit(42);
}
TIFFSetField(output, TIFFTAG_IMAGEWIDTH, width);
TIFFSetField(output, TIFFTAG_IMAGELENGTH, height);
TIFFSetField(output, TIFFTAG_COMPRESSION, COMPRESSION_DEFLATE);
TIFFSetField(output, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
TIFFSetField(output, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
TIFFSetField(output, TIFFTAG_BITSPERSAMPLE, 8);
TIFFSetField(output, TIFFTAG_SAMPLESPERPIXEL, 3);
if(TIFFWriteEncodedStrip(output, 0, raster, width * height * 3) == 0){
fprintf(stderr, "Could not write image\n");
exit(42);
}
TIFFClose(output);
printf("TIFF written successfully.\n");
return 0;
}
现在尝试构建(Ctrl + F9)并运行您的程序。我按照上面提到的步骤进行操作,并编译并运行了程序。
对于构建,Code :: Blocks的输出为(我将程序命名为libtiff):
-------------- Build: Debug in libtiff ---------------
Compiling: main.c
Linking console executable: bin\Debug\libtiff.exe
Output size is 27,93 KB
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings
对于运行,它输出:
Trying to write TIFF...
TIFF written successfully.
Process returned 0 (0x0) execution time : 0.125 s
Press any key to continue.
关于c++ - 进程以状态1终止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10807076/