我想在C中创建DLL并在Golang中使用它。
我使用this tutorial生成dll: helloWorld.h
#include<stdio.h>
void __stdcall __declspec(dllexport) hello();
helloWorld.c
#include<stdio.h>
#include "helloWorld.h"
__stdcall void hello()
{
printf("Hello World !!");
}
我在命令提示符中使用了它来编译
g++ -c helloWorld.c
g++ -shared -o helloWorld.dll helloWorld.o -Wl,--out-implib,libhelloWorld.a
我能够在此C代码中使用生成的dll,命名为example.c:
#include<stdio.h>
#include "helloWorld.h"
int main()
{
hello();
}
并使用
进行编译g++ -c example.c
g++ -o example.exe example.o -L. -lhelloWorld
但是在Golang中使用DLL时,出现错误,请帮助我
test.go
package main
/*
#cgo LDFLAGS: -L. -lhelloWorld
#include "helloWorld.h"
*/
import "C"
func main(){
C.hello()
}
错误:
# command-line-arguments
C:\Users\kumarmoh\AppData\Local\Temp\go-build544493490\b001\_x002.o: In function `_cgo_525f579e070a_Cfunc_hello':
/tmp/go-build/cgo-gcc-prolog:40: undefined reference to `hello'
collect2.exe: error: ld returned 1 exit status
其他信息:
go版本go1.11 Windows / amd64
64位操作系统,基于x64的处理器,Windows 10
我尝试在Visual Studio中创建dll,它给了我explained here错误。