Go 1.5에서는 Go 코드를 비Go에 연결하기 위해 -buildmode=c-archive 기능이 도입되었습니다. 환경. 이 기능을 사용하면 Go 코드를 기존 C 프로젝트에 통합하여 더 높은 수준의 작업을 더 장황한 Go에 위임할 수 있습니다.
Go를 만들려면 C 코드에서 사용할 수 있는 함수는 특별한 //export 주석을 사용하여 명시적으로 내보내야 합니다.
package main import ( "C" "fmt" ) //export PrintInt func PrintInt(x int) { fmt.Println(x) } func main() {}
Go 코드를 C 호출 가능 라이브러리로 컴파일하려면 -buildmode=c-archive 플래그를 사용해야 합니다.
go build -buildmode=c-archive foo.go
이 명령은 정적 라이브러리(foo.a)와 내보낸 함수 선언이 포함된 헤더 파일(foo.h)
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!