手上有一个c++的dll,是易盛期货的接口。需要封装成golang可以调用的代码。采用swig进行封装
易盛接口下载: http://www.esunny.com.cn/uplo...
网上有易盛封装成C#的例子,你可以参考。
但我要golang的
https://github.com/zjmsky/Esu...
我自己按照C#封装之后,编译不了。
提示:
你不熟悉C++吧,错误都是undefined reference,这个是没有链接的意思。
###没明白为什么要用swig来封装?go 可以直接调用dll的,写成类似:
var?(
????user32,?_?????=?syscall.LoadLibrary("user32.dll")
????messageBox,?_?=?syscall.GetProcAddress(user32,?"MessageBoxW")
)
这样的就可以直接调用了。
大概看了一下你说的“易盛期货”的dll,导出函数只有四个:
TAP_DLLEXPORT ITapTrade::ITapTradeAPI *TAP_CDECL CreateITapTradeAPI(const ITapTrade::TapAPIApplicationInfo *appInfo, ITapTrade::TAPIINT32 &iResult);
TAP_DLLEXPORT void TAP_CDECL FreeITapTradeAPI(ITapTrade::ITapTradeAPI *apiObj);
TAP_DLLEXPORT const ITapTrade::TAPICHAR *TAP_CDECL GetITapTradeAPIVersion();
TAP_DLLEXPORT const char * TAP_CDECL GetITapErrorDescribe(ITapTrade::TAPIINT32 errorCode);
你按类似的方法来声名就好了,但在结构上Go与C++可能会有一定的区别,需要注意一下结构的差异性。