首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用导出相同函数名的2C库

如何使用导出相同函数名的2C库
EN

Stack Overflow用户
提问于 2009-03-25 11:35:45
回答 4查看 8.3K关注 0票数 5

重复下列问题:

嗨,在我当前的项目中,我必须使用某种接口库。函数名是由这个接口指定的,这个函数所做的是开发人员的选择。据我所知,一个项目将使用这个函数,当涉及到编译时,您可以选择lib,并选择它的功能。我试图做的是同时使用现有的lib和我的lib,方法是包装另一个库,并在mein函数中调用它:

其他库:

代码语言:javascript
运行
复制
int function1 (int a) {
// do something
}

米利卜:

代码语言:javascript
运行
复制
int function1 (int a) {
//my code here
    otherlib::function1(a);
}

问题是,我无法访问另一个库,而另一个库没有任何名称空间。我已经试过了

代码语言:javascript
运行
复制
namespace old {
    #include "otherlib.h"
}

然后在我的函数中通过old::function 1调用旧函数。只要它只是头文件,它就能工作。lib将它的符号导出回全局空间。也是类似于

代码语言:javascript
运行
复制
namespace new {
    function1 (int a) {
        ::function1(a);
    }
}

没起作用。最后但并非最不重要的是,我尝试了ifdefs并定义了建议的here

但我没有成功。

有什么办法解决这个问题吗?提前谢谢。

编辑:我既不能访问旧库,也不能访问项目,这两个库都将在其中使用。

EDIT2:至少旧库是静态的

EN

Stack Overflow用户

发布于 2009-03-25 18:28:12

您不能在链接时解决这个问题,所以您需要在运行时通过动态库来解决这个问题。这些函数的符号基本上是在库生成之后烘焙出来的。如果两个库导出相同的符号,则它们都不能静态地链接。

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

https://stackoverflow.com/questions/681200

复制
相关文章

相似问题

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