2012-10-09 10:55:48 -06:00
|
|
|
// Copyright 2012 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.
|
|
|
|
|
2012-10-09 11:30:34 -06:00
|
|
|
// +build !windows
|
|
|
|
|
2012-10-09 10:55:48 -06:00
|
|
|
package cgotest
|
|
|
|
|
|
|
|
/*
|
2012-10-30 14:38:01 -06:00
|
|
|
#include <dlfcn.h>
|
2012-10-09 11:30:34 -06:00
|
|
|
#cgo linux LDFLAGS: -ldl
|
2012-10-09 10:55:48 -06:00
|
|
|
*/
|
|
|
|
import "C"
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
//export IMPIsOpaque
|
|
|
|
func IMPIsOpaque() {
|
|
|
|
fmt.Println("isOpaque")
|
|
|
|
}
|
|
|
|
|
|
|
|
//export IMPInitWithFrame
|
|
|
|
func IMPInitWithFrame() {
|
|
|
|
fmt.Println("IInitWithFrame")
|
|
|
|
}
|
|
|
|
|
|
|
|
//export IMPDrawRect
|
|
|
|
func IMPDrawRect() {
|
|
|
|
fmt.Println("drawRect:")
|
|
|
|
}
|
|
|
|
|
|
|
|
//export IMPWindowResize
|
|
|
|
func IMPWindowResize() {
|
|
|
|
fmt.Println("windowDidResize:")
|
|
|
|
}
|
|
|
|
|
|
|
|
func test4029(t *testing.T) {
|
|
|
|
loadThySelf(t, "IMPWindowResize")
|
|
|
|
loadThySelf(t, "IMPDrawRect")
|
|
|
|
loadThySelf(t, "IMPInitWithFrame")
|
|
|
|
loadThySelf(t, "IMPIsOpaque")
|
|
|
|
}
|
|
|
|
|
|
|
|
func loadThySelf(t *testing.T, symbol string) {
|
|
|
|
this_process := C.dlopen(nil, C.RTLD_NOW)
|
|
|
|
if this_process == nil {
|
2013-03-06 13:03:28 -07:00
|
|
|
t.Error("dlopen:", C.GoString(C.dlerror()))
|
|
|
|
return
|
2012-10-09 10:55:48 -06:00
|
|
|
}
|
|
|
|
defer C.dlclose(this_process)
|
|
|
|
|
|
|
|
symbol_address := C.dlsym(this_process, C.CString(symbol))
|
|
|
|
if symbol_address == nil {
|
2013-03-06 13:03:28 -07:00
|
|
|
t.Error("dlsym:", C.GoString(C.dlerror()))
|
|
|
|
return
|
2012-10-09 10:55:48 -06:00
|
|
|
}
|
2013-03-06 13:03:28 -07:00
|
|
|
t.Log(symbol, symbol_address)
|
2012-10-09 10:55:48 -06:00
|
|
|
}
|