代码之家  ›  专栏  ›  技术社区  ›  PierreBdR

在运行时检查程序中是否存在函数

  •  0
  • PierreBdR  · 技术社区  · 17 年前

    我正在编写一个程序,该程序将通过一些函数定义进行扩展。编译程序的方法之一是创建一个可执行文件,将代码链接到主代码。问题是:要定义的函数之一是可选的,我需要对此进行测试。

    将“-rdynamic”选项编译为g++或“-export dynamic”选项编译为ld。然后,像这样使用ldsym:

    fct_type myfct = (fct_type)dlsym(RTLD_DEFAULT, "fct");
    

    如果程序中存在函数“fct”,则返回其地址,否则返回NULL。

    现在,在Windows上,我应该能够做到:

    dll_handle = GetModuleHandle(0);
    fct_type myfct = (fct_type)GetProcAddress(dll_handle, "fct");
    

    1 回复  |  直到 17 年前
        1
  •  1
  •   PierreBdR    17 年前

    你必须与国旗链接 -Wl,--export-all-symbols

    推荐文章