플밍

go 언어에서 dll 만들고 c#에서 사용하기 본문

프로그래밍/Go Lang

go 언어에서 dll 만들고 c#에서 사용하기

너구리안주 2020. 6. 17. 15:28

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);   // "입력한 값은 병아리 입니다" 가 출력됨

"병아리" 를 입력변수로 넣고 실행하면

"입력한 값은 병아리 입니다" 가 출력됩니다.

Comments