第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在C程序中使用golang函數(shù)

在C程序中使用golang函數(shù)

Go
當(dāng)年話下 2023-07-04 14:55:06
我創(chuàng)建了一個(gè)golang程序來將一些值傳遞給c程序。?我的簡單 golang 代碼:package mainimport "C"func Add() int {? ? ? ? var a = 23? ? ? ? return a??}func main() {}然后我用它編譯了這個(gè) go build -o test.so -buildmode=c-shared test.go我的C代碼:#include "test.h"int *http_200 = Add();?當(dāng)我嘗試使用編譯它時(shí)gcc -o test test.c ./test.so我明白了int *http_200 = 添加(); ^ http_server.c:75:17:錯(cuò)誤:初始值設(shè)定項(xiàng)元素不是常量為什么我會(huì)收到此錯(cuò)誤?如何在我的 C 代碼中正確初始化該變量。PS:第一條評(píng)論后編輯。
查看完整描述

1 回答

?
繁華開滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊

這里有幾個(gè)問題。首先是類型的不兼容。Go 將返回一個(gè) GoInt。第二個(gè)問題是Add()必須導(dǎo)出該函數(shù)才能獲取所需的頭文件。如果您不想更改 Go 代碼,那么在 C 中您必須GoInt使用long long.


一個(gè)完整的例子是:


測試.go


package main


import "C"


//export Add

func Add() C.int {

    var a = 23

    return C.int(a)

}


func main() {}

測試.c


#include "test.h"

#include <stdio.h>


int main() {

    int number = Add();

    printf("%d\n", number);

}

然后編譯并運(yùn)行:


go build -o test.so -buildmode=c-shared test.go

gcc -o test test.c ./test.so &&

./test

23


GoInt使用: test.go 的第二個(gè)示例


package main


import "C"


//export Add

func Add() int { // returns a GoInt (typedef long long GoInt)

    var a = 23

    return a

}


func main() {}

測試.c


#include "test.h"

#include <stdio.h>


int main() {

    long long number = Add();

    printf("%lld\n", number);

}

然后編譯并運(yùn)行:


go build -o test.so -buildmode=c-shared test.go

gcc -o test test.c ./test.so &&

./test

23


查看完整回答
反對(duì) 回復(fù) 2023-07-04
  • 1 回答
  • 0 關(guān)注
  • 127 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)