From 3aa295a2641bd1a66f9000487bcc8b3bb7de286a Mon Sep 17 00:00:00 2001 From: TT-392 Date: Thu, 12 Sep 2024 20:44:00 +0200 Subject: [PATCH] Initial commit --- .gitignore | 1 + library_bridge.go | 11 +++++++ library_bridge.h | 81 +++++++++++++++++++++++++++++++++++++++++++++++ test.py | 9 ++++++ 4 files changed, 102 insertions(+) create mode 100644 .gitignore create mode 100644 library_bridge.go create mode 100644 library_bridge.h create mode 100644 test.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..140f8cf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.so diff --git a/library_bridge.go b/library_bridge.go new file mode 100644 index 0000000..933c3e9 --- /dev/null +++ b/library_bridge.go @@ -0,0 +1,11 @@ +package main + +import "C" + +//export Add +func Add(a, b int) int { + return a + b +} + +func main() {} + diff --git a/library_bridge.h b/library_bridge.h new file mode 100644 index 0000000..d48349d --- /dev/null +++ b/library_bridge.h @@ -0,0 +1,81 @@ +/* Code generated by cmd/cgo; DO NOT EDIT. */ + +/* package command-line-arguments */ + + +#line 1 "cgo-builtin-export-prolog" + +#include + +#ifndef GO_CGO_EXPORT_PROLOGUE_H +#define GO_CGO_EXPORT_PROLOGUE_H + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef struct { const char *p; ptrdiff_t n; } _GoString_; +#endif + +#endif + +/* Start of preamble from import "C" comments. */ + + + + +/* End of preamble from import "C" comments. */ + + +/* Start of boilerplate cgo prologue. */ +#line 1 "cgo-gcc-export-header-prolog" + +#ifndef GO_CGO_PROLOGUE_H +#define GO_CGO_PROLOGUE_H + +typedef signed char GoInt8; +typedef unsigned char GoUint8; +typedef short GoInt16; +typedef unsigned short GoUint16; +typedef int GoInt32; +typedef unsigned int GoUint32; +typedef long long GoInt64; +typedef unsigned long long GoUint64; +typedef GoInt64 GoInt; +typedef GoUint64 GoUint; +typedef size_t GoUintptr; +typedef float GoFloat32; +typedef double GoFloat64; +#ifdef _MSC_VER +#include +typedef _Fcomplex GoComplex64; +typedef _Dcomplex GoComplex128; +#else +typedef float _Complex GoComplex64; +typedef double _Complex GoComplex128; +#endif + +/* + static assertion to make sure the file is being used on architecture + at least with matching size of GoInt. +*/ +typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef _GoString_ GoString; +#endif +typedef void *GoMap; +typedef void *GoChan; +typedef struct { void *t; void *v; } GoInterface; +typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; + +#endif + +/* End of boilerplate cgo prologue. */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern GoInt Add(GoInt a, GoInt b); + +#ifdef __cplusplus +} +#endif diff --git a/test.py b/test.py new file mode 100644 index 0000000..db0e280 --- /dev/null +++ b/test.py @@ -0,0 +1,9 @@ +import ctypes + +# Load the Go shared library +mylib = ctypes.CDLL('./library_bridge.so') + +# Call the Add function from Go +result = mylib.Add(3, 5) +print(result) +