|  | // 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.dll | 
|  |  | 
|  | #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)) | 
|  | } | 
|  | } |