incubtor of dlcall code update
authorjaehoon.hyun <jaehoon.hyun@samsung.com>
Tue, 2 Apr 2019 06:27:32 +0000 (15:27 +0900)
committerjaehoon.hyun <jaehoon.hyun@samsung.com>
Tue, 2 Apr 2019 06:27:32 +0000 (15:27 +0900)
src/scoringmgr/incubator/makeDynamicLibraryCall.go

index 87d36a0452ace92dda5e95eebcf3908bdf424a22..2285e31029e85c243fd6d1724f9d22cfdb725cb8 100644 (file)
@@ -16,11 +16,22 @@ import "C"
 import "unsafe"
 import "fmt"
 import "time"
+import "log"
+import "os"
+
+var ILog *log.Logger = log.New(os.Stdout, "[scoringmgr] INFO  : ", log.LstdFlags)
+var ELog *log.Logger = log.New(os.Stdout, "[scoringmgr] ERROR : ", log.LstdFlags)
+var DLog *log.Logger = log.New(os.Stdout, "[scoringmgr] DEBUG : ", log.LstdFlags)
 
 func main() {
 
-  libPath := "src/scoringmgr/mock/mysum/libmysum.so"
-  LoadScoringAdd(libPath, 1000)
+  // LoadScoringAdd("src/scoringmgr/mock/mysum/libmysum.so", 1000)
+  go func(){
+
+    symbol := Init()
+    LoadScoringAddInterface(symbol)
+  }()
+
   for {}
 
 }
@@ -59,4 +70,39 @@ func LoadScoringAdd(libPath string, intervalMs int) {
   }()
 
   return
-}
\ No newline at end of file
+}
+
+
+
+func Init() unsafe.Pointer {
+
+
+  lib := C.CString("src/scoringmgr/mock/mysum/libmysum.so")
+  defer C.free(unsafe.Pointer(lib))
+
+  dl, err := C.dlopen(lib , C.RTLD_LAZY)
+  //TODO : release dlclose
+  // defer C.dlclose(dl)
+
+  if err != nil {
+    ELog.Fatal("dlopen error occured")
+  }
+  
+
+  sym := C.CString("add")
+  defer C.free(unsafe.Pointer(sym))
+  
+  symbol, symbolErr := C.dlsym(dl, sym)
+  if symbolErr != nil {
+    ELog.Fatal("symbol error occured")
+  }
+
+  return symbol
+}
+
+func LoadScoringAddInterface(symbol unsafe.Pointer) {
+
+  ILog.Println(C.wrap_add(symbol,2,3))
+
+  return 
+}