如何在 Windows 中使用 github.com/AllenDang/giu 和 github

当我尝试构建一个使用“github.com/gordonklaus/portaudio”和“github.com/AllenDang/giu”的 Go 程序时,我得到了C:\Program Files\Go\pkg\tool\windows_amd64\link.exe: running x86_64-w64-mingw32-g++ failed: exit status 1 当我测试使用这些分开的包构建 Go 程序时(“github.com/gordonklaus/ portaudio”和“github.com/AllenDang/giu”)程序正确构建并按预期运行。


我想知道它是否与 MINGW4 中编译的 portaudio 有关


可重现的例子:



import (

    "log"

    "os"

    "os/signal"


    g "github.com/AllenDang/giu"

    "github.com/go-audio/audio"

    "github.com/go-audio/generator"

    "github.com/gordonklaus/portaudio"

)


func RunAudio() {


    portaudio.Initialize()


    defer portaudio.Terminate()

    out := make([]float32, 2048)

    buf := &audio.FloatBuffer{

        Data:   make([]float64, 2048),

        Format: audio.FormatStereo44100,

    }

    //***************************

    currentNote := 440.0

    osc := generator.NewOsc(generator.WaveSine, currentNote, buf.Format.SampleRate)

    osc.Amplitude = 1

    osc.Freq = 440.0

    sig := make(chan os.Signal, 1)

    signal.Notify(sig, os.Interrupt, os.Kill)


    stream, err := portaudio.OpenDefaultStream(0, 2, 44100, len(out), &out)

    if err != nil {

        log.Fatal(err)

    }

    log.Println("dsp running")

    defer stream.Close()


    if err := stream.Start(); err != nil {

        log.Fatal(err)

    }

    defer stream.Stop()


    for {

        if err := osc.Fill(buf); err != nil {

            log.Printf("error filling up the buffer")

        }


        f64ToF32Mixing(out, buf)

        // write to the stream

        if err := stream.Write(); err != nil {

            log.Printf("error writing to stream : %v\n", err)

        }


    }


}


func f64ToF32Mixing(dst []float32, buf *audio.FloatBuffer) {

    for i := range buf.Data {

        dst[i] = float32(buf.Data[i])

    }


}

func loop() {

    g.Window("test").Layout(


        g.Label("hello world"),

    )

}


func main() {


    wnd := g.NewMasterWindow("Hello synth", 700, 700, g.MasterWindowFlagsTransparent)

    go wnd.Run(loop)

    RunAudio()

}


烙印99
浏览 115回答 1
1回答

蝴蝶刀刀

错误表明您需要链接您的代码(或依赖项)所依赖的库。尝试添加这些链接器标志:-lshell32萝莉32-limm32-lwinmm-脂肪醇- lsetupapi
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go