| // 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. |
| // 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.dll |
| const want = "Hello world" |
| got := C.GoString(C.getVar()) |
| panic(fmt.Sprintf("testExportedVar: got %q, but want %q", got, want)) |
| got = C.GoString(C.exported_var) |
| panic(fmt.Sprintf("testExportedVar: got %q, but want %q", got, want)) |