如何在Golang项目中静态编译libusb(C库)?

时间:2018-11-17 23:56:44

标签: c go static-linking libusb

我正在构建一个Golang应用程序,需要在其中集成EPSON的USB打印机。我的项目导入了Google的“ gousb”项目(https://github.com/google/gousb)以启用该功能,该项目正在使用“ libusb” C库(https://libusb.info/)。结果,当最终用户使用USB打印机功能时,我的项目会动态触发libusb的C代码。但是,最终用户的计算机可能预装或未预装libusb。有没有办法用我的项目本身静态编译libusb?

package main

import (
    "fmt"
    "github.com/google/gousb"
    "C"
)

const (
    VENDOR_EPSON = 0x04b8
)

func main() {
    devices := getEpsonUSBPrinters()

    if len(devices) == 0 {
        fmt.Println("No EPSON USB Device Found")
    }

    for _, device := range devices {
        fmt.Println("FOUND:", device.String())
    }
}

func getEpsonUSBPrinters() []*gousb.Device {
    ctx := gousb.NewContext()
    defer ctx.Close()

    devices, _ := ctx.OpenDevices(func(desc *gousb.DeviceDesc) bool {
        if desc.Vendor == VENDOR_EPSON {
            return true
        }

        return false
    })

    defer func() {
        for _, d := range devices {
            d.Close()
        }
    }()

    return devices
}

0 个答案:

没有答案