Home >Backend Development >Golang >How Can I Integrate Go Code into Existing C Projects?

How Can I Integrate Go Code into Existing C Projects?

Barbara Streisand
Barbara StreisandOriginal
2024-12-20 17:23:14387browse

How Can I Integrate Go Code into Existing C Projects?

Integrating Go Code into Existing C Projects

Prior to Go 1.5, integrating Go code into C projects was challenging. However, with the introduction of the -buildmode=c-archive flag, it has become possible to call Go code from within C programs.

To generate the necessary header files and archive for linking with C code, follow these steps:

  1. Create a Go source file with the functions you want to expose to C.
  2. Mark the exported functions with //export comments.
  3. Use the following command to build the C-callable static library:
go build -buildmode=c-archive <Go_source_file>.go

This will generate an archive (e.g., foo.a) and a header file (e.g., foo.h).

In your C code, include the generated header file and use the exported functions following the CGo naming conventions. For example:

#include "foo.h"

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

To compile the C program, use a command like:

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

Additional Notes:

  • The main function in the Go source file is required, even if empty.
  • Use the -pthread option when compiling the C program as the Go runtime utilizes threads.
  • You can specify the output archive and header file names using the -o and -I flags, respectively, when building the library.

The above is the detailed content of How Can I Integrate Go Code into Existing C Projects?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn