c++ 的dll 转golang可以调用

新手上路,请多包涵
阅读 5.2k
2 个回答

没明白为什么要用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++可能会有一定的区别,需要注意一下结构的差异性。

你不熟悉C++吧,错误都是undefined reference,这个是没有链接的意思。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题