>백엔드 개발 >Golang >C 코드가 포함된 패키지를 사용하여 Golang 프로젝트를 올바르게 컴파일하는 방법

C 코드가 포함된 패키지를 사용하여 Golang 프로젝트를 올바르게 컴파일하는 방법

WBOY
WBOY앞으로
2024-02-06 10:24:03996검색

如何使用包含 C 代码的包正确编译 Golang 项目

질문 내용

Golang으로 프로젝트를 작성하기 시작했는데 바로 문제가 생겼습니다. 내 코드에서 하드웨어에 연결해야 하며 드라이버와 공급업체에서 제공한 Golang 래퍼가 있습니다. 래퍼 연결에 대한 설명에서는 코드를 프로젝트의 src 디렉터리에 배치해야 한다고 나와 있습니다. (저는 이러한 디렉터리를 사용하지 않지만 패키지 이름별로 파일을 ./internal/fptr10 디렉터리와 내 main 디렉터리에 넣습니다. 가서 성공적으로 가져왔습니다.) IDE GoLand에서 이 패키지의 메서드를 보았지만 프로젝트를 컴파일하려고 할 때(드라이버 인스턴스를 생성해야 하는 첫 번째 함수인 New()를 호출함) - fptr10 오류가 발생합니다. New()가 정의되지 않았습니다. 래퍼 디렉터리에 C로 작성된 두 개의 헤더 파일이 있고 여기에 문제가 있다는 것을 알고 있지만 올바르게 컴파일하는 방법을 이해할 수 없습니다.

전체 프로젝트와 라이브러리 자체는 https://github.com/Natrix31/KKTWatcher에서 확인할 수 있습니다. 추신: 저는 Windows에서 일합니다

go build 및 go install을 사용하여 IDE와 명령줄에서 프로젝트 컴파일을 시도했습니다. 그러나 결과는 같습니다. 프로그램이 컴파일에 실패하고 오류가 발생합니다: New() undefine


정답


이 경우 c 코드를 go 모듈에 넣을 수 있습니다. 플랫폼에 c 컴파일러가 설치되어 있는지 확인하고 다음에 대한 서문 주석을 사용하세요. 인용.

main.go

으아악

calc.c

으아악

calc.h

으아악

go에는 기본적으로 cgo가 활성화되어 있으므로 그냥 빌드하세요.

으아악

위 내용은 C 코드가 포함된 패키지를 사용하여 Golang 프로젝트를 올바르게 컴파일하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제