从另一个动态链接库项目调用静态库函数

Calling a static library function from another dynamic link library project

本文关键字:静态 库函数 调用 项目 另一个 动态链接库      更新时间:2023-10-16

我有一个静态库,它的头文件中有一个类似下面的类:

namespace MyNameSpace
{
class MyClass
{
public:
void Something();
};
}

我将上面的静态库与我的另一个动态链接库项目链接在一起,现在我可以像下面这样调用上面的函数:

int Main()
{
MyNameSpace::MyClass A;
A.Something();
}

虽然上面工作正常,但我喜欢像下面这样使用我的静态库函数,而不是声明类:

int Main()
{
MyNameSpace::Something();
}

但我想知道这样做的正确方法。

我在静态库中尝试过,例如:

namespace MyNameSpace
{
void Something();
}

在将静态库链接到动态库后,尝试使用其中的函数,如下所示:

MyNameSpace::Something();

但是,IntelliSense 看不到它,我已经包含了静态库的头文件并正确链接了它。

我想做的是在类之外的静态库中声明一个函数,并使它对它链接到的另一个项目可见。在本例中,到动态库。

提前谢谢。

我终于能够通过声明如下所示的函数来做我想做的事:

在静态库中:

namespace MyNameSpace
{
void Something();
}

在动态链接库中:

MeNameSpace::Something();

现在,即使在文件范围之外,该函数也可见。