2013-02-28 121 views
0

我想在窗口中使用golang调用C++ dll与swig。 (gc编译器,在Linux上是成功的。)但是有一些问题。这是示例。在Visual Studio中使用swig -go与windows

//sampel.h 
int compute(int a, int b); 

//sample.cpp 
#include <iostream> 
#include "sample.h" 

int compute(int a, int b){ 
    int temp = (a+b)*(a-b); 
    return temp; 
} 

//sample.i 
%module sample 

%inline %{ 
    #include "sample.h" 
%} 
int compute(int a,int b); 

现在,我用这个cmd以生成包文件:

swig -c++ -go -soname sample.dll -intgosize 64 sample.i 

然后创建VS空的DLL项目中,添加sample.h太头文件,添加sample.cpp的和sample_wrap。 cxx添加到源文件,将sample.i添加到项目中。

生成解决方案,产生如下sample.dll

使用CMD产生sample.a:

go tool 6g sample.go 
go tool 6c -I C:\Go\pkg\windows_amd64 sample_gc.c 
go tool pack grc sample.a sample.6 sample_gc.6 

接下来,安装sample.a(避免一些问题),然后运行测试。去:

package main 

import (
    "fmt" 
    "sample" 
) 

func main() { 
    fmt.Println(sample.Compute(3, 4)) 
} 

的问题是在这里,当我运行test.go,得到了错误:

adddynlib: unsupported binary format 

如何解决这个问题(dll和test.go在同一个目录中)?谢谢!如果您需要我错过的额外信息,请询问。

亚历

回答

1

根据SWIG TutorialSWIG Comparability,它只是与Windows的32个版本:

痛饮也工作得很好的Windows的所有已知的32个版本,包括95/98/NT下的/ 2000/XP。

+0

感谢您的回答,我会在32位版本的Windows上试用它。 – sunny2016 2013-07-03 06:00:32

相关问题