[回到版面]
回應模式
名 稱
內 文
附加圖檔[] []
  • 可附加圖檔類型:GIF, JPG, JPEG, PNG, WEBM,瀏覽器才能正常附加圖檔
  • 附加圖檔最大上傳資料量為 3072 KB。
  • 當檔案超過寬 125 像素、高 125 像素時會自動縮小尺寸顯示
  • 目前附加圖檔使用量大小: 150682 KB / 500000 KB
  • 回覆時程式碼縮排會被trim消掉,請善用[code][/code]標色或貼到ideone等網站
  • LaTeX記法可以用「$$」或「\( \)」包起來,例如「$\sum_{k=1}^{k=n} k^2 = \frac{n(n+1)(n+2)}{6}$」
  • 投稿時請點擊畫像認證後,再按下 [送出] 按鈕提交。
  • 鬧板、攻擊性發言、煽動性發言請無視(回應者也無視),並使用del或在貓管理部向管理員回報。
  • 新介面尚處於測試階段,如果有任何問題可以向管理員或於程設交流版反映。

檔名:1535633730471.jpg-(1117 KB, 970x1200)
1117 KB
通常會如何建立Go的C module?無名18/08/30(四)20:55:30 ID:FSUav2hANo.12849
我看了一下相關資料
Go自己好像有內建簡單的C編譯器
可以直接內嵌C語言在Go的程式碼裡頭
要連結外部事先編譯好的C函式庫需要給些flag
看起來在Linux上會是跟gcc合作
但是Windows上呢?
指定VisualStdio?
還是可以選MinGW?
版本需要限定?(例如VisualStudio要2015以後才充分支援C++11)

我有翻github上的專案來參考
https://github.com/go-gl/glfw/blob/master/v3.0/glfw/glfw.go

直接給個跨平台的C函式庫跟配套的Go程式碼就算是提供一個Go的module了嗎?
無名18/09/01(六)17:48:21 ID:qmoq/dvYNo.12850
根據官方文件(https://golang.org/cmd/cgo/)來看

c, .s, .S檔 會用你的 C compiler
.cc, .cpp, .cxx 檔則是 C++ compiler
.f, .F, .for 或 .f90 用的是 fortran compiler
.h, .hh, .hpp, or .hxx 則不編譯

應該都是直接找你電腦默認的編譯器了

如果你想要強制使用 C / C++ 等的編譯器,可以用 go tool 來處理(見連結中 Using cgo directly 的章節)

順帶一提,我電腦(win7)裡面沒有裝C 或 C++ 編譯器
直接 go run 下面程式的話
package main

// #include <stdio.h>
// #include <stdlib.h>
//
// static void myprint(char* s) {
// printf("%s\n", s);
// }
import "C"
import "unsafe"

func main() {
cs := C.CString("Hello from stdio")
C.myprint(cs)
C.free(unsafe.Pointer(cs))
}

會出現以下錯誤
# command-line-arguments
exec: "gcc": executable file not found in %PATH%
無名18/09/01(六)21:49:13 ID:mqFcHxH2No.12851
>>12850
謝了
我有翻到go裡頭的library副檔名都是*.a而不是*.lib
可以確定不是用VisualStudio編的
如果我早點看到就不會發這篇了
敢直接把微軟的東西當空氣
Google真的很棒
可以少掉很多問題


【刪除文章】[]
刪除用密碼: