首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行时检查程序中是否存在函数

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

Stack Overflow用户
提问于 2009-02-05 17:00:08
回答 1查看 291关注 0票数 0

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

在Linux上,我是这样做的:

使用"-rdynamic“选项将程序编译为导出,或者将”-- g++ -dynamic“选项编译为ld。然后,像这样使用ldsym:

代码语言:javascript
复制
fct_type myfct = (fct_type)dlsym(RTLD_DEFAULT, "fct");

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

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

代码语言:javascript
复制
dll_handle = GetModuleHandle(0);
fct_type myfct = (fct_type)GetProcAddress(dll_handle, "fct");

但是对于MinGW32上的g++没有"-rdynamic“或"--export-dynamic”选项!所以这不管用。有人知道在windows上用MinGW32做什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-02-05 18:06:52

好了,最后,我会回答我自己的问题……

你必须链接到标志-Wl,--export-all-symbols,它才能工作...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/516813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档