我的问题如下:
我做了一些研究,似乎没有可能,但是我可能忽略了一些东西。
谢谢 :)
第一次进入二进制将包含类似
func main() {
// Here I need to compile an external go file (or package) which contains
// The definition of runFoo()
// Once the file/package is compiled and linked I need to call the compiled code
runFoo()
// Continue the execution process normally here
}
新:现在可以在主线Go中执行此操作,请参阅Go执行模式
从Go 1.5发行说明中 :
仅对于amd64体系结构,编译器具有一个新选项-dynlink,该选项通过支持对外部共享库中定义的Go符号的引用来辅助动态链接。
旧答案(其他选项的有用讨论):
当前无法在主行Go中创建动态链接的库*。已经有一些讨论,因此将来可能会看到支持。但是,有一个名为goandroid的第三方go项目需要与您所需的功能相同的功能,因此它们维护的修补程序应允许您对官方的Go代码库进行修补,以支持您所请求的动态链接支持。
如果要使用标准的Go运行时,我建议使用以下方法之一。从其他程序中调用Go程序,并使用以下方法进行通信:
*注意:即Windows环境中的DLL和UNIX / Linux环境中的.so文件。
问题内容: 我想构建一个Go 1.9.2二进制文件并在Docker Alpine映像上运行它。我编写的Go代码不会调用任何C代码。它还使用该包。不幸的是,它并没有听起来那么简单,因为Go似乎并非一直都在构建静态二进制文件。当我尝试执行二进制文件时,我经常会收到有关为什么二进制文件未执行的神秘消息。互联网上有很多与此有关的信息,但是大多数最终都导致人们使用试用错误来使二进制文件有效。 到目前为止,我
问题内容: 在C语言中,我们可以构建二进制文件(目标文件和可执行文件)的调试版本或发行版本。我们如何在Go中做到这一点? 问题答案: 在Go中,通常没有调试版本或发行版本。 默认情况下,将符号和调试信息与二进制文件结合在一起。但是,您可以使用删除符号并调试信息。
问题内容: 有没有办法知道二进制文件的构建版本? 我的工作站上有多个go实例,因此我想验证是否使用了正确的实例。 问题答案: 在运行时使用runtime.Version()来确定您的二进制文件是用哪个版本的Go构建的: 版本返回Go树的版本字符串。它可以是序列号,也可以是发行标签,如“ release.2010-03-04”。尾部的+表示在构建时树已进行了局部修改。
尝试将numpy矩阵写入二进制文件时,如下所示: 我得到了这个错误: 我能知道怎么解决这个问题吗?非常感谢。
当我运行命令“npm install robotjs-g”时,它会给出这个错误。 RobotJS@0.5.1安装C:\users\ehsan\appdata\roaming\npm\node_modules\RobotJS预构建-安装节点-gyp重建 prebuild-install WARN install找不到预构建的二进制文件(target=8.11.3runtime=node arch=x