【问题标题】:Calling a static library function from another dynamic link library project从另一个动态链接库项目调用静态库函数
【发布时间】:2018-01-24 01:31:25
【问题描述】:

我有一个静态库,它的头文件中有一个如下所示的类:

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 看不到它,我已经包含了我的静态库的头文件并正确链接了它。

我想做的是在类外部的静态库中声明一个函数,并使其对链接到的另一个项目可见。在这种情况下,到动态库。

提前致谢。

【问题讨论】:

  • 当您说“链接”静态库时,您的意思是您将其链接到动态库还是最终可执行文件?
  • 否,链接到动态库。最终可执行文件不使用此功能。该函数仅在动态库中使用。我必须创建一个单独的静态库,因为我必须在其中处理 SEH 异常。 :-\

标签: c++ class namespaces


【解决方案1】:

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

在静态库中:

namespace MyNameSpace
{
    void Something();
}

在动态链接库中:

MeNameSpace::Something();

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多