используйте swig -go на окнах с Visual Studio

Я хочу использовать Golang Call C ++ DLL с Swig на Windows. (Компилятор gc, в Linux был успешным.) Но есть некоторые проблемы. Вот образец.

//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

Затем создайте пустой проект dll в VS, добавьте также 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 (чтобы избежать проблем), затем запустите test.go:

package main

import (
"fmt""sample")

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

Проблема здесь, когда я запускаю test.go, получаю ошибку:

adddynlib: unsupported binary format

Как мне исправить проблему (dll и test.go находятся в одном каталоге)? Спасибо! Если вам нужна дополнительная информация, которую я пропустил, просто спросите.

Alex

0

Решение

В соответствии с SWIG Tutorial а также SWIG Совместимость, он работает только с 32-битными версиями Windows:

SWIG также отлично работает во всех известных 32-битных версиях Windows, включая 95/98 / NT / 2000 / XP.

1

Другие решения

Других решений пока нет …