CGO对“ TIFFGetField”的未定义引用

问题描述

我主要在Go项目atm上工作,但是由于参数传递,我不得不将CGO用于我的项目的一部分,目的是使用Go用C编辑Go的TIF文件。我不熟悉C,但这似乎是解决我们问题的唯一方法。

问题是当我从理论上设置Go部件并想使用我的C代码时,它会通过TIFFGetField,_TIFFmalloc,TIFFReadRGBAImage函数调用删除undefined reference to xxxx'`。

可能我什至没有以正确的方式导入libtiff库。 有趣的是,C代码本身的第一个代码是TIFF* tif = TIFFOpen("foo.tif","w");没有对TIFFOpen的引用错误,只有其他错误(TIFFGetField,_TIFFmalloc,TIFFReadRGBAImage,_TIFFfree,TIFFClose)

我的验证码是

package main

// #cgo CFLAGS: -Ilibs/libtiff/libtiff
// #include "tiffeditor.h"
import "C"

func main() {
    C.tiffEdit()
}
#include "tiffeditor.h"
#include "tiffio.h"

void tiffEdit(){
    TIFF* tif = TIFFOpen("foo.tif","w");
    if (tif) {
        uint32 w,h;
        size_t npixels;
        uint32* raster;

        TIFFGetField(tif,TIFFTAG_IMAGEWIDTH,&w);
        TIFFGetField(tif,TIFFTAG_IMAGELENGTH,&h);
        npixels = w * h;
        raster = (uint32*) _TIFFmalloc(npixels * sizeof (uint32));
        if (raster != NULL) {
            if (TIFFReadRGBAImage(tif,w,h,raster,0)) {
            //
            }
            _TIFFfree(raster);
        }
        TIFFClose(tif);
    }
}

我的首要目标只是使用go代码建立libtiff并使其能够识别libtiff函数,因此我可以专注于解决问题本身。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)