Is your library compiled in x86_64 mode, and boost? Do you need to set some -D flags to tell boost to be 64bit. I'm not a windows expert, but clearly sometime is triggering the 32bit compiler and you end up linking a blob of 32bit code into your 64bit program.
On Monday, 2 January 2017 06:58:14 UTC+11, saurabh...@gmail.com wrote: > > $ go env > set GOARCH=amd64 > set GOBIN= > set GOEXE=.exe > set GOHOSTARCH=amd64 > set GOHOSTOS=windows > set GOOS=windows > set GOPATH=C:\Users\SDeor7119713\gocode > set GORACE= > set GOROOT=C:\Go > set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64 > set CC=gcc > set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\ > Users\SDEOR7~1\AppData\Local\Temp\go-build176493662=/tmp/go-build -gno- > record-gcc-switches > set CXX=g++ > set CGO_ENABLED=1 > > cgo is setup to use boost, pthread etc. along with archive built from my > own code (-ls88). libs88.a uses another .a, which is where boost is being > called. > > // #cgo CFLAGS: -I${SRCDIR}/includes > // #cgo LDFLAGS: -Wl,-rpath,'$ORIGIN/lib/' -L${SRCDIR}/windows/amd64 -ls88 > -lLogDump -lboost_system -lboost_date_time -lboost_thread -lboost_filesystem > -lstdc++ -lm -lpthread > // #include <stdlib.h> > // #include <stdio.h> > // #include "s88.h" > import "C" > > > On Wednesday, April 20, 2016 at 7:06:28 PM UTC-7, Dorival Pedroso wrote: >> >> Hi, >> >> I'm just wondering what is the cause of the following error (multiple >> definition of __something)? >> C:\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1 >> C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libntdll.a(dyyls01966.o):(.idata$5+0x0): >> >> multiple definition of `__imp_pow' >> >> This only happens on Windows10 but on Ubuntu/Linux. >> >> The Go code makes a call to LAPACK via a C interface as follows: >> package main >> >> /* >> #cgo CFLAGS: -O3 >> #cgo linux LDFLAGS: -lm -llapack -lgfortran -lblas >> #cgo windows LDFLAGS: -lm -llapack -lgfortran -lblas -LC:/GoslDeps/lib >> >> #include <stdlib.h> >> >> void dgesvd_(const char* jobu, const char* jobvt, const int* M, const >> int* N, double* A, const int* lda, double* S, double* U, const int* ldu, >> double* VT, const int* ldvt, double* work,const int* lwork, const int* >> info); >> >> int lapack_svd(double *U, double *S, double *Vt, long m_long, double *A) { >> int m = (int)(m_long); >> int info = 0; >> char job = 'A'; >> int lwork = 10*m; >> double* work = (double*)malloc(lwork*sizeof(double)); >> dgesvd_(&job, // JOBU >> &job, // JOBVT >> &m, // M >> &m, // N >> A, // A >> &m, // LDA >> S, // S >> U, // U >> &m, // LDU >> Vt, // VT >> &m, // LDVT >> work, // WORK >> &lwork, // LWORK >> &info); // INFO >> free(work); >> return info; >> } >> */ >> import "C" >> >> import ( >> "fmt" >> "math" >> "unsafe" >> ) >> >> func main() { >> A := []float64{1, 2, 3, 2, -4, -9, 3, 6, -3} // col-major format >> m := int(math.Sqrt(float64(len(A)))) >> I := func(i, j int) int { return j*m + i } >> printmat(m, A, "A") >> U := make([]float64, len(A)) >> S := make([]float64, len(A)) >> Vt := make([]float64, len(A)) >> info := C.lapack_svd( >> (*C.double)(unsafe.Pointer(&U[0])), >> (*C.double)(unsafe.Pointer(&S[0])), >> (*C.double)(unsafe.Pointer(&Vt[0])), >> (C.long)(m), >> (*C.double)(unsafe.Pointer(&A[0])), >> ) >> fmt.Printf("SVD: info = %d\n", info) >> USVt := make([]float64, len(A)) >> for i := 0; i < m; i++ { >> for j := 0; j < m; j++ { >> for k := 0; k < m; k++ { >> USVt[I(i, j)] += U[I(i, k)] * S[k] * Vt[I(k, j)] >> } >> } >> } >> printmat(m, USVt, "U*S*Vt") >> } >> >> func printmat(m int, M []float64, msg string) { >> fmt.Printf("%s =\n", msg) >> for i := 0; i < m; i++ { >> for j := 0; j < m; j++ { >> fmt.Printf("%13.8f", M[j*m+i]) >> } >> fmt.Println() >> } >> } >> >> Any help is much appreciated. >> >> Cheers. >> Dorival >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.