>백엔드 개발 >Golang >Go 코드를 기존 C 프로젝트에 어떻게 통합할 수 있나요?

Go 코드를 기존 C 프로젝트에 어떻게 통합할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-20 17:23:14387검색

How Can I Integrate Go Code into Existing C Projects?

기존 C 프로젝트에 Go 코드 통합

Go 1.5 이전에는 Go 코드를 C 프로젝트에 통합하는 것이 어려웠습니다. 하지만 -buildmode=c-archive 플래그가 도입되면서 C 프로그램 내에서 Go 코드를 호출하는 것이 가능해졌습니다.

C 코드와 연결하는 데 필요한 헤더 파일과 아카이브를 생성하려면 다음을 따르세요. 단계:

  1. C에 노출하려는 함수가 포함된 Go 소스 파일을 만듭니다.
  2. 내보낸 함수를 //export로 표시합니다.
  3. C 호출 가능 정적 라이브러리를 구축하려면 다음 명령을 사용하세요.
go build -buildmode=c-archive <Go_source_file>.go

이렇게 하면 아카이브(예: foo.a)와 헤더 파일( 예: foo.h).

C 코드에 생성된 헤더 파일을 포함하고 CGo 다음에 내보낸 함수를 사용합니다. 명명 규칙. 예:

#include "foo.h"

int main(int argc, char **argv) {
    PrintInt(42);
    return 0;
}

C 프로그램을 컴파일하려면 다음과 같은 명령을 사용하십시오.

gcc -pthread foo.c foo.a -o foo

추가 참고 사항:

  • Go 소스 파일의 주요 기능은 비어 있더라도 필수입니다.
  • Go 런타임은 스레드를 활용하므로 C 프로그램을 컴파일할 때 -pthread 옵션을 사용합니다.
  • 라이브러리 빌드 시 -o 및 -I 플래그를 각각 사용하여 출력 아카이브 및 헤더 파일 이름을 지정할 수 있습니다.

위 내용은 Go 코드를 기존 C 프로젝트에 어떻게 통합할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.