Outils pour utilisateurs

Outils du site


blog

Notes windows EXE DLL

Appeler une fonction dans une DLL

Avec Go

En ligne de commande

Voir :

wine rundll32.exe user32.dll,MessageBoxW
env LANG="fr_FR.UTF-8" wine rundll32.exe user32.dll,MessageBoxA "Titre de la fenêtre"
2026/04/19 22:39 · Jean-Baptiste

Création image conteneur - exemple de multi-stage builds

Containerfile

FROM golang:latest as builder
WORKDIR /build
COPY ./build/main.go ./
# RUN go mod download
ENV CGO_ENABLED 0
ENV GOOS linux
#RUN CGO_ENABLED=0 go build main.go
RUN go build -ldflags="-s -w" main.go
 
FROM scratch
WORKDIR /app
COPY --from=builder /build/main ./main
EXPOSE 8080
ENTRYPOINT ["./main"]

build/main.go

package main
 
import (
    "fmt"
    "net/http"
)
 
func homeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World ! \n")
}
 
func main() {
    http.HandleFunc("/", homeHandler)
    http.ListenAndServe(":8080", nil)
}
2026/04/18 17:07 · Jean-Baptiste

Exécuter du code python avec go lang

Pb 1

$ go build py.go 
# command-line-arguments
./py.go:3:11: fatal error: Python.h: No such file or directory
    3 | // #include <Python.h>
      |           ^~~~~~

Solution

export C_INCLUDE_PATH=/usr/include/python3.13/

Pb 2

$ LANG=C go build py.go 
# command-line-arguments
/usr/lib/go-1.26/pkg/tool/linux_amd64/link: running x86_64-linux-gnu-gcc failed: exit status 1
/usr/bin/x86_64-linux-gnu-gcc -m64 -Wl,--build-id=0x93e927a0e727ab54037ec0b3c85116f34e35a1b2 -o $WORK/b001/exe/a.out -Wl,--export-dynamic-symbol=_cgo_panic -Wl,--export-dynamic-symbol=_cgo_topofstack -Wl,--export-dynamic-symbol=crosscall2 -Wl,--compress-debug-sections=zlib /tmp/go-link-256395171/go.o /tmp/go-link-256395171/000000.o /tmp/go-link-256395171/000001.o /tmp/go-link-256395171/000002.o /tmp/go-link-256395171/000003.o /tmp/go-link-256395171/000004.o /tmp/go-link-256395171/000005.o /tmp/go-link-256395171/000006.o /tmp/go-link-256395171/000007.o /tmp/go-link-256395171/000008.o /tmp/go-link-256395171/000009.o /tmp/go-link-256395171/000010.o /tmp/go-link-256395171/000011.o /tmp/go-link-256395171/000012.o /tmp/go-link-256395171/000013.o /tmp/go-link-256395171/000014.o /tmp/go-link-256395171/000015.o /tmp/go-link-256395171/000016.o -O2 -g -O2 -g -lpthread -no-pie
/usr/bin/x86_64-linux-gnu-ld.bfd: /tmp/go-link-256395171/000001.o: in function `_cgo_0270074b3d42_Cfunc_PyRun_SimpleString':
/tmp/go-build/cgo-gcc-prolog:55:(.text+0x15): undefined reference to `PyRun_SimpleStringFlags'
/usr/bin/x86_64-linux-gnu-ld.bfd: /tmp/go-link-256395171/000001.o: in function `_cgo_0270074b3d42_Cfunc_Py_Finalize':
/tmp/go-build/cgo-gcc-prolog:67:(.text+0x31): undefined reference to `Py_Finalize'
/usr/bin/x86_64-linux-gnu-ld.bfd: /tmp/go-link-256395171/000001.o: in function `_cgo_0270074b3d42_Cfunc_Py_Initialize':
/tmp/go-build/cgo-gcc-prolog:76:(.text+0x41): undefined reference to `Py_Initialize'
collect2: error: ld returned 1 exit status
2026/04/18 17:00 · Jean-Baptiste
blog.txt · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki