Skip to content

Instantly share code, notes, and snippets.

@k-takata
Created April 1, 2015 15:17
Show Gist options
  • Save k-takata/8f9f71445ad608941aa1 to your computer and use it in GitHub Desktop.
Save k-takata/8f9f71445ad608941aa1 to your computer and use it in GitHub Desktop.
Golang cgo test on Windows
#include <cstdio>
#include <iostream>
#include <windows.h>
class Foo {
public:
Foo() {
OutputDebugStringA("Foo::Foo()\n");
//std::cout << "Foo::Foo()\n";
//std::printf("Foo::Foo()\n");
}
void bar() {
OutputDebugStringA("bar()\n");
//std::cout << "bar()\n";
//std::printf("bar()\n");
}
};
Foo foo;
extern "C" void bar()
{
foo.bar();
}
#if 0
int main()
{
std::cout << "Hello from C++\n";
bar();
}
#endif
package main
/*
#cgo LDFLAGS: -lkernel32
void bar();
*/
import "C"
import "fmt"
func main() {
fmt.Println("Hello from Go")
C.bar()
}
@k-takata
Copy link
Author

k-takata commented Apr 1, 2015

Foo::Foo() is not called on Windows/Go 1.4.2.

Crashes when using std::cout instead of OutputDebugStringA.
Link error occurs when using std::printf.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment