Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

windows环境使用go-sdk,编译报错 #252

Open
iamnotsofun opened this issue Jan 11, 2024 · 13 comments
Open

windows环境使用go-sdk,编译报错 #252

iamnotsofun opened this issue Jan 11, 2024 · 13 comments
Assignees
Labels

Comments

@iamnotsofun
Copy link

iamnotsofun commented Jan 11, 2024

环境:
go1.21.6
使用gosdk README中的hello_main.go部署合约,编译时报错:
3bb8f940bf726bf81fca97996a8fe36

@iamnotsofun iamnotsofun changed the title import import使用go-sdk,编译报错 Jan 11, 2024
@bxq2011hust
Copy link
Member

  1. 下载csdk的动态库bcos-c-sdk.dll到执行go build的目录下,重命名为libbcos-c-sdk.dll
  2. 尝试重新执行go build看是否能够成功
  3. 如果失败,请基于go env GOMODCACHE和依赖的bcos-c-sdk的版本,找到对应的目录,将libbcos-c-sdk.dll拷贝到依赖的bcos-c-sdk的libs目录下

@bxq2011hust bxq2011hust changed the title import使用go-sdk,编译报错 windows环境import使用go-sdk,编译报错 Jan 11, 2024
@bxq2011hust bxq2011hust changed the title windows环境import使用go-sdk,编译报错 windows环境使用go-sdk,编译报错 Jan 11, 2024
@iamnotsofun
Copy link
Author

根据提供的1和2步骤,仍然出现相同报错,步骤3所指的目录具体是哪个? @bxq2011hust

@iamnotsofun
Copy link
Author

在对应目录下,没有找到llibs目录。
image

@bxq2011hust
Copy link
Member

在对应目录下,没有找到llibs目录。 image

创建一个,然后把动态库放进去

@iamnotsofun
Copy link
Author

已经尝试在该目录下创建libs并放入libbcos-c-sdk.dll,编译仍然报相同错误。

@bxq2011hust
Copy link
Member

已经尝试在该目录下创建libs并放入libbcos-c-sdk.dll,编译仍然报相同错误。

go env GOMODCACHE之后的目录和动态库是类似下面的结构吗?检查下你放置的目录是不是正确

[email protected]\bindings\go\csdk\libs/libbcos-c-sdk.dll

@iamnotsofun
Copy link
Author

已经尝试在该目录下创建libs并放入libbcos-c-sdk.dll,编译仍然报相同错误。

go env GOMODCACHE之后的目录和动态库是类似下面的结构吗?检查下你放置的目录是不是正确

[email protected]\bindings\go\csdk\libs/libbcos-c-sdk.dll

是这样的目录结构,但是我是放到[email protected]\libs/libbcos-c-sdk.dll下了。
放到[email protected]\bindings\go\csdk\libs/libbcos-c-sdk.dll之后,可以编译通过。
但是跑编译后的exe文件没有打印任何日志,直接退出了。
在import go-sdk之前是可以正常运行程序的。
我在程序中只是简单import go-sdk包,如下:
image

@bxq2011hust
Copy link
Member

猜测是动态库找不到导致的,你需要在编译得到的exe所在的目录,也放置这个动态库,windows会自动找到
@iamnotsofun

@iamnotsofun
Copy link
Author

猜测是动态库找不到导致的,你需要在编译得到的exe所在的目录,也放置这个动态库,windows会自动找到 @iamnotsofun

放置了,程序仍然无法运行。

@bxq2011hust
Copy link
Member

猜测是动态库找不到导致的,你需要在编译得到的exe所在的目录,也放置这个动态库,windows会自动找到 @iamnotsofun

放置了,程序仍然无法运行。

请贴一下报错信息

@iamnotsofun
Copy link
Author

猜测是动态库找不到导致的,你需要在编译得到的exe所在的目录,也放置这个动态库,windows会自动找到 @iamnotsofun

放置了,程序仍然无法运行。

请贴一下报错信息

exe程序没有打印任何日志就退出了,如何排查?不引入go-sdk会正常执行并打印日志。

@bxq2011hust
Copy link
Member

@iamnotsofun 在cmd里面执行看有没有报错缺动态库,或者搜一下我记得有个工具可以查看exe依赖的动态库,类似于linux下的ldd

@iamnotsofun
Copy link
Author

通过cmd执行会弹窗报错缺少动态库,PowerShell不会。dll改名后解决。

@iamnotsofun 在cmd里面执行看有没有报错缺动态库,或者搜一下我记得有个工具可以查看exe依赖的动态库,类似于linux下的ldd

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants