> 백엔드 개발 > Golang > Go 1.5의 `-buildmode=c-archive`를 사용하여 C 프로그램에서 Go 함수를 어떻게 호출할 수 있나요?

Go 1.5의 `-buildmode=c-archive`를 사용하여 C 프로그램에서 Go 함수를 어떻게 호출할 수 있나요?

Linda Hamilton
풀어 주다: 2024-12-19 19:53:13
원래의
669명이 탐색했습니다.

How Can I Call Go Functions from a C Program Using Go 1.5's `-buildmode=c-archive`?

Go 1.5를 사용하여 C 프로그램에서 Go 코드 호출

Go 1.5에서는 Go 코드를 비Go에 연결하기 위해 -buildmode=c-archive 기능이 도입되었습니다. 환경. 이 기능을 사용하면 Go 코드를 기존 C 프로젝트에 통합하여 더 높은 수준의 작업을 더 장황한 Go에 위임할 수 있습니다.

C 호출을 위한 Go 함수 내보내기

Go를 만들려면 C 코드에서 사용할 수 있는 함수는 특별한 //export 주석을 사용하여 명시적으로 내보내야 합니다.

package main

import (
    "C"
    "fmt"
)

//export PrintInt
func PrintInt(x int) {
    fmt.Println(x)
}

func main() {}
로그인 후 복사

C용 컴파일러 구성 사용법

Go 코드를 C 호출 가능 라이브러리로 컴파일하려면 -buildmode=c-archive 플래그를 사용해야 합니다.

go build -buildmode=c-archive foo.go
로그인 후 복사

이 명령은 정적 라이브러리(foo.a)와 내보낸 함수 선언이 포함된 헤더 파일(foo.h)

C 프로젝트에 통합

C 프로젝트에 생성된 헤더 파일을 포함시키고 다음과 같이 제공된 기능을 사용하십시오.

#include "foo.h"

int main(int argc, char **argv) {
    PrintInt(42);
    return 0;
}
로그인 후 복사

컴파일 및 실행

C 프로그램을 컴파일하려면 적절한 스레드 지원을 위해 -pthread 플래그를 사용하십시오.

gcc -pthread foo.c foo.a -o foo
로그인 후 복사

이제 실행 파일을 실행하면 의도한 정수(42)가 콘솔에 인쇄됩니다.

위 내용은 Go 1.5의 `-buildmode=c-archive`를 사용하여 C 프로그램에서 Go 함수를 어떻게 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿