Я хочу использовать 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
В соответствии с SWIG Tutorial а также SWIG Совместимость, он работает только с 32-битными версиями Windows:
SWIG также отлично работает во всех известных 32-битных версиях Windows, включая 95/98 / NT / 2000 / XP.
Других решений пока нет …