重复下列问题:
嗨,在我当前的项目中,我必须使用某种接口库。函数名是由这个接口指定的,这个函数所做的是开发人员的选择。据我所知,一个项目将使用这个函数,当涉及到编译时,您可以选择lib,并选择它的功能。我试图做的是同时使用现有的lib和我的lib,方法是包装另一个库,并在mein函数中调用它:
其他库:
int function1 (int a) {
// do something
}米利卜:
int function1 (int a) {
//my code here
    otherlib::function1(a);
}问题是,我无法访问另一个库,而另一个库没有任何名称空间。我已经试过了
namespace old {
    #include "otherlib.h"
}然后在我的函数中通过old::function 1调用旧函数。只要它只是头文件,它就能工作。lib将它的符号导出回全局空间。也是类似于
namespace new {
    function1 (int a) {
        ::function1(a);
    }
}没起作用。最后但并非最不重要的是,我尝试了ifdefs并定义了建议的here
但我没有成功。
有什么办法解决这个问题吗?提前谢谢。
编辑:我既不能访问旧库,也不能访问项目,这两个库都将在其中使用。
EDIT2:至少旧库是静态的
发布于 2009-03-25 18:28:12
您不能在链接时解决这个问题,所以您需要在运行时通过动态库来解决这个问题。这些函数的符号基本上是在库生成之后烘焙出来的。如果两个库导出相同的符号,则它们都不能静态地链接。
https://stackoverflow.com/questions/681200
复制相似问题