檔案test.h如下
#ifndef _test_h
#define _test_h
#ifdef __cplusplus
extern "c"
#endif
#endif
檔案test.cc如下
#include "_cgo_export.h"
extern "c"
}
檔案test.go如下
package test
/*#include "test.h"
*/import "c"
import ()
func test()
//export test
func test()
如果執行go build -x則會有如下結果
work=/tmp/go-build845372545
mkdir -p $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/
mkdir -p $work/_/home/pirate/programs/goclipse/workspace/v8/src/
cd /home/pirate/programs/goclipse/workspace/v8/src/test
/home/pirate/programs/go/pkg/tool/linux_amd64/cgo -objdir $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/ -- -i $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/ test.go
/home/pirate/programs/go/pkg/tool/linux_amd64/6c -f -v -w -i $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/ -i /home/pirate/programs/go/pkg/linux_amd64 -o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/_cgo_defun.6 -d goos_linux -d goarch_amd64 $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/_cgo_defun.c
gcc -i . -g -o2 -fpic -m64 -pthread -print-libgcc-file-name
gcc -i . -g -o2 -fpic -m64 -pthread -i $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/ -o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/_cgo_main.o -c $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/_cgo_main.c
gcc -i . -g -o2 -fpic -m64 -pthread -i $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/ -o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/_cgo_export.o -c $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/_cgo_export.c
gcc -i . -g -o2 -fpic -m64 -pthread -i $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/ -o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/test.cgo2.o -c $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/test.cgo2.c
gcc -i . -g -o2 -fpic -m64 -pthread -i $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/ -o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/test.o -c ./test.c
g++ -i . -g -o2 -fpic -m64 -pthread -i $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/ -o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/test.cc.o -c ./test.cc
g++ -i . -g -o2 -fpic -m64 -pthread -o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/_cgo_.o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/_cgo_main.o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/_cgo_export.o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/test.cgo2.o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/test.o $work/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/test.cc.o
# _/home/pirate/programs/goclipse/workspace/v8/src/test
/tmp/go-build845372545/_/home/pirate/programs/goclipse/workspace/v8/src/test/_obj/test.cc.o: in function `mytest':
./test.cc:6: undefined reference to `test()'
collect2: error: ld returned 1 exit status
這裡可以看到是test.cc是用g++來編譯的,但是test函式的宣告是在_cgo_export.c裡,宣告是在_cgo_export.h裡,g++編譯的時候肯定會找不到這個函式,但是只需要乙個小修改就可以解決問題,即把include "_cgo_export.h"移到extern "c"裡去,最終如下
extern "c"
}
為wampserver 新增新版本php支援
1.1.停止wamp伺服器.3.從已存在的php版本檔案中 如php7.0.4 eg.wamp bin php php7.0.4 複製以下檔案 php.ini phpforapache.ini和wampserver.conf到php7.2.3資料夾.4.開啟php7.1.0資料夾的以下檔案 php....
iOS檢查App新版本並更新新版本
檢查新版本 更新 第一種方法 檢查新版本 更新 dispatch async dispatch get global queue dispatch queue priority default,0 檢查新版本更新 void showalert void alertview uialertview a...
CowNewSQL發布新版本
cownewsql發布新版本了,這個版本的推出標誌著cownewsql能正式應用於開發實際了。本版更新列表 1 增加了對create table drop table create index和dropindex的支援。2 修改了n多bug,使用從各方收集到的近百條各種複雜的sql語句全面測試通過!...