기존 C 프로젝트에 Go 코드 통합
질문:
Go 코드를 호출하는 것이 가능합니까? C 프로그램에서, 그렇다면 어떻게 이것이 가능할까요? 달성되었나요?
답변:
예, Go 1.5에서는 -buildmode=c-archive 모드를 도입했습니다. 이 모드를 사용하면 Go 코드를 C 프로그램에 연결하는 데 적합한 아카이브로 컴파일할 수 있습니다. Go 코드를 기존 C 프로젝트에 통합하려면:
내보내기용 함수 표시:
컴파일 가다 아카이브:
다음 명령을 사용하여 Go 코드를 C 호출 가능 정적 라이브러리로 컴파일합니다.
go build -buildmode=c-archive foo.go
C 프로그램 연결:
C 프로그램에 생성된 헤더 파일:
#include "foo.h"
링크 -pthread 옵션을 사용하여 Go 아카이브에 대해:
gcc -pthread foo.c foo.a -o foo
예:
다음 Go 코드를 고려해보세요. (foo.go):
package main import "C" import "fmt" //export PrintInt func PrintInt(x int) { fmt.Println(x) } func main() {}
아카이브에 컴파일:
go build -buildmode=c-archive foo.go
그런 다음 C 프로그램(foo.c)에서:
#include "foo.h" int main(int argc, char **argv) { PrintInt(42); return 0; }
컴파일하세요:
gcc -pthread foo.c foo.a -o foo
foo를 실행하면 인쇄됩니다. "42".
위 내용은 기존 C 프로젝트에 Go 코드를 어떻게 통합할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!