diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..965a4cd --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "files.associations": { + "stdio.h": "c", + "c_wrapper.h": "c" + } +} \ No newline at end of file diff --git a/c_wrapper/build_dll.bat b/c_wrapper/build_dll.bat new file mode 100644 index 0000000..e37282e --- /dev/null +++ b/c_wrapper/build_dll.bat @@ -0,0 +1 @@ +go build -buildmode=c-shared -o c_wrapper.dll export.go \ No newline at end of file diff --git a/c_wrapper/build_run_test.bat b/c_wrapper/build_run_test.bat new file mode 100644 index 0000000..73a826d --- /dev/null +++ b/c_wrapper/build_run_test.bat @@ -0,0 +1,2 @@ +gcc -o test.exe -L. c_wrapper.dll test.c +test.exe \ No newline at end of file diff --git a/c_wrapper/build_test.bat b/c_wrapper/build_test.bat new file mode 100644 index 0000000..dcab261 --- /dev/null +++ b/c_wrapper/build_test.bat @@ -0,0 +1 @@ +gcc -o test.exe -L. c_wrapper.dll test.c \ No newline at end of file diff --git a/c_wrapper/c_init_login.go b/c_wrapper/c_init_login.go index a414e8c..66b6ee4 100644 --- a/c_wrapper/c_init_login.go +++ b/c_wrapper/c_init_login.go @@ -36,9 +36,9 @@ func init_sdk(onConnecting C.base_func, callback := NewConnCallback(onConnecting, onConnectSuccess, onKickedOffline, onUserTokenExpired, onConnectFailed) return open_im_sdk.InitSDK(callback, C.GoString(operationID), C.GoString(config)) } -func main() { +// func main() { -} +// } type ConnCallback struct { onConnecting C.base_func diff --git a/c_wrapper/c_wrapper.dll b/c_wrapper/c_wrapper.dll index d6ba5f7..ed82ea6 100644 Binary files a/c_wrapper/c_wrapper.dll and b/c_wrapper/c_wrapper.dll differ diff --git a/c_wrapper/c_wrapper.h b/c_wrapper/c_wrapper.h index 5287a02..a14b996 100644 --- a/c_wrapper/c_wrapper.h +++ b/c_wrapper/c_wrapper.h @@ -19,28 +19,6 @@ typedef struct { const char *p; ptrdiff_t n; } _GoString_; /* Start of preamble from import "C" comments. */ -#line 3 "c_init_login.go" - -#include - -typedef void (*base_func)(); -typedef void (*err_func)(int,void *); - -extern base_func _onConnecting; -extern base_func _onConnectSuccess; -extern base_func _onKickedOffline; -extern base_func _onUserTokenExpired; -extern err_func _onConnectFailed; - -extern void c_onConnecting(); -extern void c_onConnectSuccess(); -extern void c_onKickedOffline(); -extern void c_onUserTokenExpired(); -extern void c_onConnectFailed(int ,void*); - - - -#line 1 "cgo-generated-wrapper" /* End of preamble from import "C" comments. */ @@ -96,7 +74,7 @@ typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; extern "C" { #endif -extern __declspec(dllexport) GoUint8 init_sdk(base_func onConnecting, base_func onConnectSuccess, base_func onKickedOffline, base_func onUserTokenExpired, err_func onConnectFailed, char* operationID, char* config); +extern __declspec(dllexport) void Init_SDK(); #ifdef __cplusplus } diff --git a/c_wrapper/export.go b/c_wrapper/export.go new file mode 100644 index 0000000..494080f --- /dev/null +++ b/c_wrapper/export.go @@ -0,0 +1,13 @@ +package main + +import "C" +import "fmt" + +//export Init_SDK +func Init_SDK() { + fmt.Println("Init SDK") +} + +func main() { + +} diff --git a/c_wrapper/test.c b/c_wrapper/test.c new file mode 100644 index 0000000..6dcce65 --- /dev/null +++ b/c_wrapper/test.c @@ -0,0 +1,10 @@ +// gcc -o test.exe -lc_wrapper.dll test.c + +#include + +#include "c_wrapper.h" + +void main(int argc, char **argv) +{ + Init_SDK(); +} \ No newline at end of file diff --git a/c_wrapper/test.go b/c_wrapper/test.go deleted file mode 100644 index f4e4cbe..0000000 --- a/c_wrapper/test.go +++ /dev/null @@ -1,35 +0,0 @@ -package main - -/* -#include -typedef void (*base_func)(); -typedef void (*err_func)(int,void *); - -base_func _onConnecting; -base_func _onConnectSuccess; -base_func _onKickedOffline; -base_func _onUserTokenExpired; -err_func _onConnectFailed; - -void c_onConnecting() -{ -_onConnecting(); -} -void c_onConnectSuccess() -{ -_onConnectSuccess(); -} -void c_onKickedOffline() -{ -_onKickedOffline(); -} -void c_onUserTokenExpired() -{ -_onUserTokenExpired(); -} -void c_onConnectFailed(int errCode,void* errMsg) -{ -_onConnectFailed(errCode,errMsg); -} -*/ -import "C"