Achar a biblioteca
O nome do arquivo em cada sistema, onde ele é procurado, e o que fazer quando não acha.
A mesma biblioteca tem três nomes: libz.so.1 no Linux, libz.dylib no macOS, zlib1.dll no Windows. C.carregar("z") procura pelo nome curto no lugar em que o sistema procura, e aceita também o caminho completo.
dataforge
adopt Arcane.C as C
libc := C.padrao() // libc, ou msvcrt no Windows
assert libc.tem("strlen")
assert not libc.tem("funcao_que_nao_existe")
falhou := no
monitor:
C.carregar("biblioteca_que_nao_existe_aqui")
handle RuntimeError as e:
falhou := yes
out e.message
assert falhou| Sistema | Arquivo | Onde procura | Se não achar |
|---|---|---|---|
| Linux | libNOME.so | /usr/lib, /lib, LD_LIBRARY_PATH | instale o pacote -dev |
| macOS | libNOME.dylib | /usr/lib, Homebrew, DYLD_LIBRARY_PATH | brew install NOME, ou o caminho completo |
| Windows | NOME.dll | a pasta do programa, PATH | ponha a pasta da DLL no PATH |
C.do_processo() abre os símbolos do próprio processo — o dlopen(NULL) —, e C.matematica() resolve a libm, que no macOS mora dentro da libSystem.