Cgo:抱歉,未实现:未在64位模式下编译

I'm currently trying to add some C code to my Go project. nothing fancy

/*
#include <stdio.h>
void test() {
    printf("hooola")
}
*/

import (
    "C"
)

func MessageBox() {
    C.test()
}

However this will return

cc1.exe: sorry, unimplemented: 64-bit mode not compiled in

I checked my g++ and gcc compilers and everything seems fine, g++ -v returns this

C:\Usersagga>g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=C:/Program\ Files/mingw-w64/x86_64-6.2.0-posix-seh-rt_v5-rev1/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/6.2.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-6.2.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw620/x86_64-620-posix-seh-rt_v5-rev1/mingw64 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-libstdcxx-filesystem-ts=yes --disable-isl-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw620/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw620/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw620/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw620/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev1, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw620/x86_64-620-posix-seh-rt_v5-rev1/mingw64/opt/include -I/c/mingw620/prerequisites/x86_64-zlib-static/include -I/c/mingw620/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw620/x86_64-620-posix-seh-rt_v5-rev1/mingw64/opt/include -I/c/mingw620/prerequisites/x86_64-zlib-static/include -I/c/mingw620/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw620/x86_64-620-posix-seh-rt_v5-rev1/mingw64/opt/lib -L/c/mingw620/prerequisites/x86_64-zlib-static/lib -L/c/mingw620/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: posix
gcc version 6.2.0 (x86_64-posix-seh-rev1, Built by MinGW-W64 project)

While gcc --version returns this

g:\Workspace\Go\src\github.comaggaer\snak>gcc --version
gcc (GCC) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Both installed using mingw64bits so I am not sure where my problem is coming from?

1- Short Answer:
I tried many versions, the Only working version for both 32bit and 64bit go build in 64 bit Widows OS is tdm64-gcc-5.1.0-2.exe
You may install it to C:\TDM-GCC-64\ and add C:\TDM-GCC-64\bin to your PATH (on top = or left).


2- You may try MinGW-w64 - for 32 and 64 bit Windows Or x64-4.8.1-release-posix-seh-rev5.
This versions works fine just for 64 bit build (not 32 bit target on 64 bit OS).


3- For Windows OS run your command prompt: cmd (terminal in Linux) then run this command (whereis gcc in Linux):

where gcc

Then if there are multiple gcc paths, then you may edit the order of these and put one you need in top or remove all others.


4- See:

Differences between Mingw-w64 and TDM-GCC for a simple GDI project

What is the difference between Orwell's MinGW and TDM Dev-C++ versions?


I hope this helps.

what worked for me was installing the 64 bit version of mingw adding it to PATH and then removing all other mingw's from PATH and then very important RESTARTING THE COMPUTER, you have to restart your computer.