使用Swig中的Go使用C ++类

时间:2015-02-18 08:55:17

标签: c++ go swig

我想在Windows7中使用Swig中的Go使用C ++类

当我构建项目" go build main.go"我收到了以下错误:

  

c:\ .. \ Temp \ go-build591352403 / swtest.a(swtest_wrap.o):格式错误的pe文件:__ cgo_topofstack:无效的符号绑定105

我在Windows7中使用的是1.3 32bit,gcc 4.8.1 32bit和swig 3.0。 当我在Windows7中使用64位Go和GCC时,我看到同样的错误。

我可以使用64位go和gcc在Ubuntu上成功构建和运行。

我在Windows中遗漏了什么吗?

这是文件结构和内容。

main(文件夹)

  • main.go

    package main
    
    import (
      "swtest"
    )
    
    func main() {
      swtest.NewSwt().Print("Swig test!")
    }
    

swtest(文件夹)

  • swtest.cpp

    #include "swtest.h"
    
    void Swt::Print(const std::string& s)
    {
        std::cout << s;
        std::cout << std::endl;
    }
    
  • swtest.h

     #ifndef SWTEST_H
     #define SWTEST_H
    
     #include <string>
     #include <iostream>
    
     class Swt
     {
     public:
        void Print(const std::string& s);
     };
    
     #endif  
    
  • swtest.go

     package swtest
    
  • swtest.swigcxx

    %module swtest
    %include "std_string.i"
    
    %{
    #include "swtest.h"
    %}
    
    %include "swtest.h"
    

2 个答案:

答案 0 :(得分:0)

如果你感觉大胆,那么Windows的pe错误在Go 1.5beta1中得到修复。给它一个旋转!下载1.5 beta2

答案 1 :(得分:0)

请升级到Go 1.5。在Go 1.5中解决了这个问题。 在之前的Go版本中,Windows OS中存在已知问题。 Go团队已经固定在1.5。 请查看以下主题,它将提供更多信息。

Go with SWIG error in Windows