2009-02-05 62 views
0

我正在编写一个程序,该程序可以被某些函数定义扩展。编译程序的一种方法是创建一个将您的代码链接到主代码的可执行文件。问题是:要定义的功能之一是可选的,我需要为此进行测试。在运行时检查程序中是否存在函数

在Linux上,这里是我在做什么:

编译程序与“-rdynamic”选项,以G ++或“--export动态”选项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"); 

但没有“-rdynamic”或“--export动态”选项中的g ++上MINGW32!所以这是行不通的。有没有人知道在MinGW32上用Windows做什么?

回答

1

好了,到了最后,我会回答我的问题...

你必须与标志-Wl,--export-all-symbols链接和它的作品...