run.go
package main
import "C"
import "fmt"
//export sum
func sum(N int) int {
sum := 0
for i:=0;i<N;i++ {
sum += i
}
return sum
}
func main() {
fmt.Println(sum(100000000))
}
go build --buildmode=c-shared -o run.so run.go
main.py
import os
from ctypes import *
current = os.path.dirname(os.path.abspath(__file__))
class StructPointer(Structure):
_fields_ = [('p', c_longlong,),]
if __name__ == '__main__':
run = CDLL(f'{current}/run.so')
run.sum.restype = StructPointer
result = run.sum(100000000)
print(result.p)