作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试在 Linux 中将一些在 Nim 中创建的代码静态链接到 Go 应用程序中。我关注了 Nim Backend Integration在 Go 中链接 C 的文档和一些文章,但还没有让它工作。
这是我目前所处的位置......
Nim 代码 target.nim
:
proc testnim* {.exportc.} =
echo "In Nim!"
我编译它:
nim c --app:staticLib --noMain --header target.nim
Go代码app.go
:
package main
/*
#cgo CFLAGS: -I/my/path/to/target/nimcache
#cgo CFLAGS: -I/my/path/to/Nim/lib
#cgo LDFLAGS: /my/path/to/target/libtarget.a
#include "/my/path/to/target/nimcache/target.h"
*/
import "C"
import "fmt"
func main() {
fmt.Println("In Go!")
C.NimMain()
C.testnim()
}
我尝试构建这两个:
go build
go build --ldflags '-extldflags "-static"' app.go
这是我得到的:
# command-line-arguments/my/path/to/target/libtarget.a(stdlib_system.o): In function `nimUnloadLibrary':stdlib_system.c:(.text+0xe6f0): undefined reference to `dlclose'/my/path/to/target/libtarget.a(stdlib_system.o): In function `nimLoadLibrary':stdlib_system.c:(.text+0xe71b): undefined reference to `dlopen'/my/path/to/target/libtarget.a(stdlib_system.o): In function `nimGetProcAddr':stdlib_system.c:(.text+0xe750): undefined reference to `dlsym'collect2: error: ld returned 1 exit status
所以我遗漏了一些东西。我正在使用 Go 1.5 和 Nim 0.11.3(开发分支)。任何建议或提示将不胜感激。
最佳答案
您缺少 libdl 库。将 -ldl
添加到您的 LDFLAGS
关于go - 将 Nim 代码静态链接到 Go,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32512065/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!