beego 中能不能嵌入cgo代码? 求大神解答.

n0tf0und · 2016-07-21 02:45:55 · 5070 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2016-07-21 02:45:55 的主题,其中的信息可能已经有所发展或是发生改变。

本人最终目的是调用一个dll动态库,但这个动态库传入的参数是一个结构体,打算用cgo去调用这个dll,但是测试的时候,使用beego框架好像不能嵌入cgo代码,不知道是我姿势不对还是beego的确不能调用cgo,求各位大神帮忙解答下,感激不尽!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5070 次点击  ∙  1 赞  
加入收藏 微博
15 回复  |  直到 2017-09-16 05:46:45
polaris
polaris · #1 · 9年之前

这个框架不应该有任何关系。你先试试不用框架能不能调用。

n0tf0und
n0tf0und · #2 · 9年之前
polarispolaris #1 回复

这个框架不应该有任何关系。你先试试不用框架能不能调用。

的确是不能调用了,但我以前是可以正常调用的啊,现在调用CGO的一个函数,提示我could not determine kind of name for C.hello,

我的代码是下面这些,感觉代码应该是没有问题的.

package main
/*
#include 
void hello(){
    printf("hello");
}
*/

import (
    "C"
)

func main() {
    C.hello()
}
polaris
polaris · #3 · 9年之前

C 代码和 import "C" 之间不能有空行的

n0tf0und
n0tf0und · #4 · 9年之前
polarispolaris #3 回复

C 代码和 import "C" 之间不能有空行的

感谢大神解答! :pray:

746166858
746166858 · #5 · 7年之前

同求,我也是调用一个dll,其中有函数的输入参数是结构体,不是结构体指针,调用的时候参数都转换成 uintptr,无论怎么传都失败,求各位大神帮忙解答,感激不尽不尽

1019459067
1019459067 · #6 · 7年之前

我通过gogland 调用此代码,控制台无法输出 hello 此现象是不是正常?

polaris
polaris · #7 · 7年之前
10194590671019459067 #6 回复

我通过gogland 调用此代码,控制台无法输出 `hello` 此现象是不是正常?

确定 C 代码和 import "C" 之间没有空行吗?

1019459067
1019459067 · #8 · 7年之前
polarispolaris #7 回复

#6楼 @1019459067 确定 C 代码和 import "C" 之间没有空行吗?

必须肯定没有空格

1019459067
1019459067 · #9 · 7年之前
10194590671019459067 #8 回复

#7楼 @polaris 必须肯定没有空格

屏幕快照 2017-09-16 下午12.06.00.png

这是我的调用 和 输出方式

polaris
polaris · #10 · 7年之前
10194590671019459067 #9 回复

#8楼 @1019459067 ![屏幕快照 2017-09-16 下午12.06.00.png](https://static.studygolang.com/170916/3bbd9958bbc83876059fe020be87d48b.png) 这是我的调用 和 输出方式

import "C",不能

import (
    "C"
)
1019459067
1019459067 · #11 · 7年之前
polarispolaris #10 回复

#9楼 @1019459067 `import "C"`,不能 ```go import ( "C" ) ```

还是一样没有输出,不知道大神用的什么IDE,我的输出如下: 屏幕快照 2017-09-16 下午12.15.22.png

polaris
polaris · #12 · 7年之前
10194590671019459067 #11 回复

#10楼 @polaris 还是一样没有输出,不知道大神用的什么IDE,我的输出如下: ![屏幕快照 2017-09-16 下午12.15.22.png](https://static.studygolang.com/170916/9459640b02b16de6a1896a3fc4600d38.png)

printf("hello"); 改为 printf("hello\n");

1019459067
1019459067 · #13 · 7年之前

@polaris 试了,还是不行,是不是我们版本不同导致?

polaris
polaris · #14 · 7年之前

@1019459067 那你通过命令行运行试试?别通过 IDE

1019459067
1019459067 · #15 · 7年之前

@polaris 终于解决了,谢谢了,看来不能绝对相信IDE

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传