2015-07-20 65 views
0

所以最后我无法通过研究帮助自己了。希望你能帮助我。 我最近决定在我的学士论文中学习C++:我的第一个目标是用libtiff库读取tiff图像的像素值。然而,每一次图书馆功能的调用似乎都会破坏我的程序的一部分。C++:为什么libtiff会中断控制台输出?


下面是简单的“HelloWorld” - 程序,它的作品,因为它应该:

#include "tiffio.h" 
#include <iostream> 
using namespace std; 

int main() { 
    cout << "Hello" << endl; 
// TIFF* tif = TIFFOpen("path to .tif", "r"); 
    return 0; 
} 

当我取消在main()的第二行,代码仍然通过编译(除警告'tif'没有被使用),我可以照常开始程序。但是没有任何东西会被打印到控制台中了。不是“你好”,也没有任何错误。


任何建议的错误可能是哪里?代码应该没问题,我想在库设置期间我会搞砸一些东西。下面是我所做的:

  1. 我设法设置Eclipse(火星,32位)的C++和MinGW(32位)在我的64位的Win7,然后下载的libtiff 4.0.4和建造它下面this指令。

  2. 我创建了一个新的C++ - 项目与所提到的代码,做项目的属性如下调整:

    • 项目 - >属性 - > C/C++常规 - >路径和Symbols- >库 路径 - >加“d:/ ... /tiff-4.0.4/libtiff/.libs”

    • 项目 - >属性 - > C/C++建设 - > MinGW的C++ 链接器> Miscellaneous->将链接标记设置为“-static-libgcc -static-libstdC++”

    • Project-> Properties-> C/C++ Build-> MinGW C++ Linker-> Libraries->将 (-L)设置为“D:/ ... /tiff-4.0.4/libtiff/.libs”和-l)为“的libtiff”

我知道的.tif是一个有效的文件,因为我在C#中实现我的计划的一部分,使用的LibTiff.NET库由BitMiracle。

预先感谢您!


编辑1:同样的错误occures,即使TIFF* tif = TIFFOpen("path to .tif", "r");不会被调用,但在代码中的一部分死记下来。调试也不起作用,程序似乎在执行一行之前终止(退出值0),没有任何错误报告。

+0

好吧,或者1)您错误地构建了libtiff。 2)您的主程序使用与libtiff库不同的选项构建。 3)Libtiff在第一个函数调用中有一个错误。所以,请选择。另外,为C++做这样的事情需要更多的经验来确定发生错误的位置,而不是在C#或.NET中执行此操作。例如,您可能已经调试到TIFFOpen函数中,以确切地查看该函数内哪些行破坏了您的程序。 – PaulMcKenzie

+0

这可能都是libtiff构建不正确,主要问题是使用其他选项构建的。然而,链接的[教程](http://www.gaia-gis.it/spatialite-2.4.0/mingw_how_to.html#libtiff)并不难遵循。但我没有知识来说明。调试不起作用,程序似乎在单行执行之前终止。 – JCh3ss

回答

0

我有同样的问题,并设法摆脱它。

我在我的64位Win7上为C++和MinGW设置了eclipse(Mars),然后下载了libtiff 4.0.4,并在this指令之后构建它。 构建后,我得到了包含两个目录文件:

  1. 包括

    • tiff.h
    • tiffconf.h
    • tiffio.h
    • tiffio.hxx
    • tiffvers.h
  2. LIB

    • libtiff.a
    • libtiff.dll.a
    • libtiff.la
    • libtiffxx.a
    • libtiffxx.dll.a
    • libtiffxx.la

我也链接所有包括文件和只有libtiff.a到我的项目,并解决它,即其他行现在执行。

我希望我帮助这个职位。