问答

c++ 的dll 转golang可以调用

作者:admin 2021-04-22 我要评论

手上有一个c++的dll,是易盛期货的接口。需要封装成golang可以调用的代码。采用swig进行封装 易盛接口下载: http://www.esunny.com.cn/uplo... swig网站: http:/...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

手上有一个c++的dll,是易盛期货的接口。需要封装成golang可以调用的代码。采用swig进行封装

易盛接口下载: http://www.esunny.com.cn/uplo...

swig网站http://www.swig.org/

网上有易盛封装成C#的例子,你可以参考。
但我要golang的

https://github.com/zjmsky/Esu...

我自己按照C#封装之后,编译不了。
提示:image.png

###

你不熟悉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++可能会有一定的区别,需要注意一下结构的差异性。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 求助!Mysql workbench connections出

    求助!Mysql workbench connections出

  • c++ 的dll 转golang可以调用

    c++ 的dll 转golang可以调用

  • c++的 new int{10}  和 new int(10) 有

    c++的 new int{10} 和 new int(10) 有

  • Grafana MySQL为数据源时, 折线图无法

    Grafana MySQL为数据源时, 折线图无法

腾讯云代理商
海外云服务器