如何从特殊目录加载库并调用其函数。
在正常情况下我使用extern
例如
extern _fopen
global main
section .text
main:
xor r10,r10
push r10
mov r13, 0x6277
push r13
mov rsi,rsp
push r10
mov r13, 0x726964656b616d
push r13
mov rdi,rsp
call _fopen
mov r14, rax
....
使用ld
nasm
加载库
ld -o test -e main test2.o -lSystem
但我想在不使用extern的情况下调用该函数。
我想通过 C 中dlopen
相同的路径动态加载库。
还有另一种方法可以在nasm中调用库中的函数吗?
答案 0 :(得分:2)
只需像在C中那样使用dlopen
和dlsym
。当然,你也必须将这些声明为extern。但是您不必链接任何库,因为它们是由动态链接器dyld提供的。