25 lines
549 B
Go
25 lines
549 B
Go
package main
|
|
|
|
/*
|
|
#include <stdlib.h>
|
|
*/
|
|
import "C"
|
|
import "unsafe"
|
|
|
|
//export prepareCStringArray
|
|
func prepareCStringArray(goStrings []string) (**C.char, int) {
|
|
cStrings := make([]*C.char, len(goStrings))
|
|
for i, s := range goStrings {
|
|
cStrings[i] = C.CString(s)
|
|
}
|
|
return (**C.char)(unsafe.Pointer(&cStrings[0])), len(goStrings)
|
|
}
|
|
|
|
//export freeCStringArray
|
|
func freeCStringArray(cStrings **C.char, length int) {
|
|
array := (*[1 << 30]*C.char)(unsafe.Pointer(cStrings))[:length:length]
|
|
for _, s := range array {
|
|
C.free(unsafe.Pointer(s))
|
|
}
|
|
}
|