【问题标题】:NASM - How can I dynamically load a library and call its functionNASM - 如何动态加载库并调用其函数
【发布时间】:2014-03-02 11:15:15
【问题描述】:

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

例如,我通常使用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
    ....

并在nasm 中使用ld 加载库

ld -o test -e main test2.o -lSystem 

但我想在不使用 extern 的情况下调用该函数。

我想通过与dlopenC 中相同的路径动态加载库。

还有其他方法可以在 nasm 中调用库中的函数吗?

【问题讨论】:

    标签: macos assembly nasm x86-64


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2021-10-18
    • 2020-07-22
    • 2013-09-09
    • 2012-03-02
    • 2015-08-07
    相关资源
    最近更新 更多