1 回答

TA貢獻(xiàn)1866條經(jīng)驗 獲得超5個贊
cgo 文檔中的以下問題是:
在文件中使用 //export 會對前導(dǎo)碼施加限制:由于它被復(fù)制到兩個不同的 C 輸出文件中,因此它不能包含任何定義,只能包含聲明。如果文件同時包含定義和聲明,則兩個輸出文件將生成重復(fù)的符號,并且鏈接器將失敗。為避免這種情況,必須將定義放在其他文件的序言中,或放在 C 源文件中。
移動線條
extern void Setup(char *, char *, char *, char *, char *, char *);
extern char *Auth(char *, char *);
到 該文件和 C 定義將生成以下成功構(gòu)建的前導(dǎo)碼:locksmith.hlocksmith.c
/*
#cgo CFLAGS: -I/usr/local/bin/jdk-15.0.1/include -I/usr/local/bin/jdk-15.0.1/include/linux
#include "locksmith.h"
*/
import "C"
的開頭將包含以下內(nèi)容:locksmith.c
#include <string.h>
#include <jni.h> // JNI header provided by JDK
#include "locksmith.h"
#include "yada_yada_locksmith_Locksmith.h"
此外,構(gòu)建命令需要只是
go build -o liblocksmith.so -buildmode=c-shared
沒有在最后。locksmith.go
- 1 回答
- 0 關(guān)注
- 212 瀏覽
添加回答
舉報