doutangshuan6473 2017-07-10 17:46
浏览 76

用swig / go调用msvc c ++ dll

I have an msvc dll that has some functions that I want to call with go. I understand that it's not going to be reasonable to wrap all of the functionality of a large project, but I only need a subset of functionality and the time spent on wrapping the c++ with SWIG is reasonable for me.

The potential issue that I've discovered is that the c++ ABI is not compatible between mingw/gcc and msvc, so if I compile the generated wrapper with gcc as specified in the SWIG documentation, it probably won't be able to call the functions in the DLL.

The first question is whether this understanding is correct.

The second question is that assuming the above is true, my plan is to "cdecl(dllexport)" all of the "externs" in the swig wrapper and then "cdecl(dllimport)" all of the "externs" in the cgo section in the generated go file, then compile the DLL with msvc.

My preference, however, would be to compile the object file with msvc and then rename it to .syso so that the go linker will automatically pick it up.

The second question is whether either of these two options are reasonable and/or likely to be successful.

Thanks in advance.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥100 任意维数的K均值聚类
    • ¥15 stamps做sbas-insar,时序沉降图怎么画
    • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
    • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
    • ¥15 关于#Java#的问题,如何解决?
    • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
    • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
    • ¥15 cmd cl 0x000007b
    • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
    • ¥500 火焰左右视图、视差(基于双目相机)