mirror of
https://github.com/golang/go
synced 2024-11-07 12:36:27 -07:00
a6d3dc40c4
At least in mingw-clang it is not permitted to just name a .dll on the command line. You must name the corresponding import library instead, even though the dll is used when the executable is run. This fixes misc/cgo/testso and misc/cgo/testsovar on windows/arm64. Change-Id: I516b6ccba2fe3a9ee2c01e710a71850c4df8522f Reviewed-on: https://go-review.googlesource.com/c/go/+/312046 Trust: Russ Cox <rsc@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
// Copyright 2015 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package cgosotest
|
|
|
|
// This test verifies that Go can access C variables
|
|
// in shared object file via cgo.
|
|
|
|
/*
|
|
// intentionally write the same LDFLAGS differently
|
|
// to test correct handling of LDFLAGS.
|
|
#cgo windows CFLAGS: -DIMPORT_DLL
|
|
#cgo linux LDFLAGS: -L. -lcgosotest
|
|
#cgo dragonfly LDFLAGS: -L. -l cgosotest
|
|
#cgo freebsd LDFLAGS: -L. -l cgosotest
|
|
#cgo openbsd LDFLAGS: -L. -l cgosotest
|
|
#cgo solaris LDFLAGS: -L. -lcgosotest
|
|
#cgo netbsd LDFLAGS: -L. libcgosotest.so
|
|
#cgo darwin LDFLAGS: -L. libcgosotest.dylib
|
|
#cgo windows LDFLAGS: -L. libcgosotest.a
|
|
#cgo aix LDFLAGS: -L. -l cgosotest
|
|
|
|
#include "cgoso_c.h"
|
|
|
|
const char* getVar() {
|
|
return exported_var;
|
|
}
|
|
*/
|
|
import "C"
|
|
|
|
import "fmt"
|
|
|
|
func Test() {
|
|
const want = "Hello world"
|
|
got := C.GoString(C.getVar())
|
|
if got != want {
|
|
panic(fmt.Sprintf("testExportedVar: got %q, but want %q", got, want))
|
|
}
|
|
got = C.GoString(C.exported_var)
|
|
if got != want {
|
|
panic(fmt.Sprintf("testExportedVar: got %q, but want %q", got, want))
|
|
}
|
|
}
|