Почему функция c не распознается в моем файле. go при использовании Cgo? Я следил за всем процессом и пробовал пример на godo c, он работал, но этот не работает, в чем причина?
структура папок
libsha .a
sha. cpp
sha.o
sha.h
main. go
Код
sha.h
#ifndef _SHA_H_
#define _SHA_H_
#include <stdlib.h>
#include "TYPE.h"
typedef struct {
U32 bits[2];
U32 input[16];
U32 state[5];
} SHA_CTX;
void SHA_Init(SHA_CTX *ctx);
void SHA_Update(SHA_CTX *ctx, U8 *in, int inbytes);
void SHA_Final(SHA_CTX *ctx, U8 *out);
void KS_SHA(U8 *out, U8 *in, int inbytes);
#endif
sha. cpp
#include "sha.h"
void SHA_Init(SHA_CTX *ctx)
{
ctx->state[0] = INIT_H0;
ctx->state[1] = INIT_H1;
ctx->state[2] = INIT_H2;
ctx->state[3] = INIT_H3;
ctx->state[4] = INIT_H4;
ctx->bits[0] = ctx->bits[1] = 0;
}
main. go
package main
// #cgo LDFLAGS: -L . -lsha
// #include "sha.h"
import "C"
import "unsafe"
type CPoint struct {
Point C.struct_SHA_CTX
}
func main() {
point := CPoint{Point: C.struct_SHA_CTX{}}
C.SHA_Init(point)
defer C.free(unsafe.Pointer(point))
}
Ошибка
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: $WORK\b001\_x002.o: in function `_cgo_6280fd3fea2a_Cfunc_SHA_Init':
/tmp/go-build/cgo-gcc-prolog:49: undefined reference to `SHA_Init'
collect2.exe: error: ld returned 1 exit status
Почему функция SHA_Init не распознается?