All use dlopen/dlsym to libqrencode.so (system-wide via gcc role):
- Haskell: System.Posix.DynamicLinker + foreign import ccall "dynamic"
- F#: Mono P/Invoke DllImport("libqrencode.so")
- COBOL: LINKAGE SECTION for proper struct pointer access
- Nim: dynlib module (loadLib/symAddr)
- Fortran: renamed dlclose binding to avoid symbol collision
- D: core.sys.posix.dlfcn (dlopen/dlsym)
- OCaml: Ctypes.foreign via ocamlfind #require
27 lines
699 B
OCaml
27 lines
699 B
OCaml
#use "topfind";;
|
|
#require "ctypes";;
|
|
#require "ctypes.foreign";;
|
|
|
|
open Ctypes;;
|
|
open Foreign;;
|
|
|
|
type qrcode
|
|
let qrcode : qrcode structure typ = structure "QRcode";;
|
|
let _qr_version = field qrcode "version" int;;
|
|
let qr_width = field qrcode "width" int;;
|
|
let _qr_data = field qrcode "data" (ptr char);;
|
|
let () = seal qrcode;;
|
|
|
|
let encode_string =
|
|
foreign "QRcode_encodeString"
|
|
(string @-> int @-> int @-> int @-> int @-> returning (ptr qrcode));;
|
|
|
|
let qr_free =
|
|
foreign "QRcode_free"
|
|
(ptr qrcode @-> returning void);;
|
|
|
|
let () =
|
|
let qr = encode_string "unsandbox-qr-ok" 0 1 2 1 in
|
|
let w = getf !@qr qr_width in
|
|
Printf.printf "QR:unsandbox-qr-ok:ROWS:%d\n" w;
|
|
qr_free qr;;
|