使用 Swig 从 Go 中使用 C++ 类
Using C++ classes from Go using Swig
我想在 Windows7
中使用 swig 从 Go 使用 C++ class
当我构建项目时 "go build main.go" 我收到以下错误:
c:\..\Temp\go-build591352403/swtest.a(swtest_wrap.o): malformed pe file: __cgo_topofstack: invalid symbol binding 105
我在 Windows7 中使用 go 1.3 32 位、gcc 4.8.1 32 位和 swig 3.0。
我在 Windows7 中使用 64 位 Go 和 GCC 时看到同样的错误。
我能够使用 64 位 go 和 gcc 在 Ubuntu 上成功构建和 运行。
我是否遗漏了 windows 中的某些内容?
这是文件结构和内容。
主要(文件夹)
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"
如果你觉得大胆,windows 上的 pe 错误已在 Go 1.5beta1 中修复。试一试!下载 1.5 beta2
请升级到 Go 1.5。这个问题在 Go 1.5 中得到了解决。
在以前的 Go 版本中,Windows OS 是已知问题。 Go 团队已在 1.5 中修复。
请查看以下主题,其中将提供更多信息。
我想在 Windows7
中使用 swig 从 Go 使用 C++ class当我构建项目时 "go build main.go" 我收到以下错误:
c:\..\Temp\go-build591352403/swtest.a(swtest_wrap.o): malformed pe file: __cgo_topofstack: invalid symbol binding 105
我在 Windows7 中使用 go 1.3 32 位、gcc 4.8.1 32 位和 swig 3.0。 我在 Windows7 中使用 64 位 Go 和 GCC 时看到同样的错误。
我能够使用 64 位 go 和 gcc 在 Ubuntu 上成功构建和 运行。
我是否遗漏了 windows 中的某些内容?
这是文件结构和内容。
主要(文件夹)
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"
如果你觉得大胆,windows 上的 pe 错误已在 Go 1.5beta1 中修复。试一试!下载 1.5 beta2
请升级到 Go 1.5。这个问题在 Go 1.5 中得到了解决。 在以前的 Go 版本中,Windows OS 是已知问题。 Go 团队已在 1.5 中修复。 请查看以下主题,其中将提供更多信息。