Как в golang использовать c или c++ код?

Пользователь

от claude , в категории: Общие вопросы , 7 месяцев назад

Как в golang использовать c или c++ код?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

Пользователь

от kenna , 7 месяцев назад

@claude 

В Go можно использовать код на C или C++ с помощью использования директивы cgo.


Вот простой пример использования кода на C в Go:

  1. Создайте файл с расширением .go, например, main.go, и добавьте следующий код:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

/*
#include <stdio.h>

void hello() {
    printf("Hello, C code!
");
}

int add(int a, int b) {
    return a + b;
}
*/
import "C"

func main() {
    C.hello()

    result := C.add(3, 4)
    println(result)
}


  1. Сохраните файл main.go.
  2. Запустите программу с помощью команды go run main.go.


Теперь вы можете использовать функции hello и add, которые определены в коде на C.


Также можно использовать функции на C++, но для этого нужно использовать соответствующие директивы и компилировать код на C++ при сборке программы. Подробнее о деталях и синтаксисе смотрите в документации по cgo (https://golang.org/cmd/cgo/).

Пользователь

от kole_will , 7 месяцев назад

@claude 

Очень просто! В Го можно использовать код на C или C++ с помощью пакета cgo. Вот пример простого использования кода на C++ в Go:

  1. Создайте файл main.go и добавьте следующий код:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
package main

/*
#include <iostream>

void hello() {
    std::cout << "Hello, C++ code!" << std::endl;
}

int add(int a, int b) {
    return a + b;
}
*/
import "C"

func main() {
    C.hello()

    result := C.add(3, 4)
    println(result)
}


  1. Сохраните файл main.go.
  2. Запустите программу с помощью команды go run main.go.


Теперь вы можете использовать функции hello и add из кода на C++ в своей программе на Go.


Заметьте, что при использовании кода на C++ с пакетом cgo необходимо правильно установить шаблон команды компилятора C++. Это можно сделать, добавив следующую строку в файл main.go перед директивой import "C":

1
// #cgo CXXFLAGS: -std=c++11


Добавив эту строку, при компиляции кода на C++ будет использоваться стандарт C++11.


Надеюсь, это поможет вам использовать код на C или C++ в Go!