diff --git a/_demo/cppintf/cppintf.go b/_demo/cppintf/cppintf.go index 9d2475c8..634f9949 100644 --- a/_demo/cppintf/cppintf.go +++ b/_demo/cppintf/cppintf.go @@ -34,4 +34,5 @@ func (p *Bar) sqrt(v float64) float64 { func main() { bar := NewBar(1) foo.F(&bar.Callback) + foo.G(&bar.Callback) } diff --git a/_demo/cppintf/foo/bar/bar.cpp b/_demo/cppintf/foo/bar/bar.cpp index f6a8fa5f..5e226c26 100644 --- a/_demo/cppintf/foo/bar/bar.cpp +++ b/_demo/cppintf/foo/bar/bar.cpp @@ -9,3 +9,7 @@ interface ICallback { extern "C" void f(ICallback* cb) { printf("val: %d\ncalc(2): %lf\n", cb->val(), cb->calc(2)); } + +void g(ICallback* cb) { + f(cb); +} diff --git a/_demo/cppintf/foo/foo.go b/_demo/cppintf/foo/foo.go index eeeb2349..ebd047ef 100644 --- a/_demo/cppintf/foo/foo.go +++ b/_demo/cppintf/foo/foo.go @@ -20,3 +20,6 @@ type CallbackVtbl struct { //go:linkname F C.f func F(cb *Callback) + +//go:linkname G C._Z1gP9ICallback +func G(cb *Callback)