From b4fd4a0c3885788efd79125102e5a22043a8508b Mon Sep 17 00:00:00 2001 From: xushiwei Date: Sat, 22 Jun 2024 09:14:10 +0800 Subject: [PATCH] cppintf: c++ name --- _demo/cppintf/cppintf.go | 1 + _demo/cppintf/foo/bar/bar.cpp | 4 ++++ _demo/cppintf/foo/foo.go | 3 +++ 3 files changed, 8 insertions(+) diff --git a/_demo/cppintf/cppintf.go b/_demo/cppintf/cppintf.go index 9d2475c86..634f99493 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 f6a8fa5fd..5e226c266 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 eeeb2349f..ebd047ef2 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)