NASM - 如何动态加载库并调用其功能

时间:2014-03-02 11:15:16

标签: macos assembly nasm x86-64

如何从特殊目录加载库并调用其函数。

在正常情况下我使用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中调用库中的函数吗?

1 个答案:

答案 0 :(得分:2)

只需像在C中那样使用dlopendlsym。当然,你也必须将这些声明为extern。但是您不必链接任何库,因为它们是由动态链接器dyld提供的。