当我尝试构建一个使用“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()}
1 回答

蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
错误表明您需要链接您的代码(或依赖项)所依赖的库。
尝试添加这些链接器标志:
-lshell32
萝莉32
-limm32
-lwinmm
-脂肪醇
- lsetupapi
- 1 回答
- 0 关注
- 114 浏览
添加回答
举报
0/150
提交
取消