我正在编写一个程序,该程序旨在通过一些函数定义进行扩展。编译程序的一种方法是创建一个可执行文件,将您的代码链接到主代码。问题是:其中一个要定义的函数是可选的,我需要对其进行测试。
在Linux上,我是这样做的:
使用"-rdynamic“选项将程序编译为导出,或者将”-- g++ -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");但是对于MinGW32上的g++没有"-rdynamic“或"--export-dynamic”选项!所以这不管用。有人知道在windows上用MinGW32做什么吗?
发布于 2009-02-05 18:06:52
好了,最后,我会回答我自己的问题……
你必须链接到标志-Wl,--export-all-symbols,它才能工作...
https://stackoverflow.com/questions/516813
复制相似问题