go 언어로 dll 만들기 [ request.go ]
package main
import (
"C"
)
func PrintTest(arg *C.char) *C.char {
input := C.GoString(arg)
return C.CString("입력한 값은 " + input + " 입니다")
}
func main() {
}
문자열을 입력받아 다른문자열과 합하여 리턴해 주는 함수입니다.
dll 로 빌드하기
$ go build -o request.dll -buildmode=c-shared
c# 에서 사용하기
위에서 생성된 request.dll 을 c# 프로젝트로 복사한 후 아래와 같이 코딩합니다.
// dll 선언
[DllImport("request.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr PrintTest(byte[] data);
// 사용하기
var pStr = PrintTest(Encoding.Default.GetBytes("병아리"));
string str = Marshal.PtrToStringAnsi(pStr);
Console.WriteLine(str); // "입력한 값은 병아리 입니다" 가 출력됨
"병아리" 를 입력변수로 넣고 실행하면
"입력한 값은 병아리 입니다" 가 출력됩니다.