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

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

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

提前致谢。

#1楼 票数:0 已采纳

我终于可以通过声明如下函数来做我想做的事情:

在静态库中:

namespace MyNameSpace
{
    void Something();
}

在动态链接库中:

MeNameSpace::Something();

现在,该功能甚至在文件范围之外也可见。

  ask by GTAVLover translate from so

未解决问题?本站智能推荐:

1回复

如何直接调用类静态函数

假设我有这样的事情: Header.h: 我想调用detail::HiddenClass<T>::function(***); 但是如您所见,这太荒谬了。 更不用说该功能应该是用户干扰的一部分。 我不能指望代码的“用户”写出detail::HiddenClass<
1回复

在名称空间中进行函数重载(与具有静态成员的类相比)不是一个好主意吗?

这是一个关于想法而不是真实代码的问题 过去我总是写很多方法重载,这很好: 那太棒了。 问题从昨天开始,当我编写函数重载时是一个名称空间: 这里的问题是,在命名空间内,编译器不知道第二个函数。 因此,它将尝试将给定类型转换为与第一个函数匹配的类型。 不幸的是,编译器没有告诉我这
3回复

错误:“函数”不是非静态数据成员或“类”的基类

我正在尝试了解C ++的语法,因为我几乎是该语言的新手,但是我不知道我到底要面对什么错误。 我在代码上实现了Component类,并且工作正常 我正在学习的书也要求我在GUI名称空间中实现另一个名为Container的类 我没有得到的是他实现类的方式,这给了我帖子标题中的语法错误。
3回复

是否可以在相同的命名空间中但在不同的嵌套项目中定义具有相同名称的类?

我在 Eclipse 中有一个大项目,其中包含多个嵌套项目。 这些嵌套项目中的每一个都位于一个单独的文件夹中,并单独编译和链接。 最后,他们每个人都输出一个单独的静态库。 然后很少有与这些静态库链接的可执行文件。 在其中两个项目中,我有两个具有相同名称和相同构造函数参数的类,但它们具有不同的实现和不
4回复

using-directive类静态函数?

我使用的API在名为TCODConsole的类中具有许多函数作为静态函数。 现在我认为它在命名空间中,所以我写道: using namespace TCODConsole; 。 然后我发现TCODConsole不是命名空间,而是一个类。 有没有办法以与using namespace相似
1回复

C++如何在静态库的命名空间中设置私有类成员?

嗨,书呆子, 我在尝试编码静态库时遇到问题。 我正在尝试设置具有公共班级职能的私人班级成员。 该类位于名称空间中。 当我尝试编译示例程序(namespace_test)时,出现LNK2001错误,指出未解析的外部符号。 (Fehler 1错误LNK2001:Nichtaufgelö
5回复

在其声明之上调用函数

处理对声明之外的函数调用的这种不一致背后的理由是什么? 为什么我可以在一个类中完成它,但不能在命名空间内或全局范围内?
1回复

如何在不加前缀[类名]::的情况下在友元函数中使用静态成员:

我在Player.h有此代码 和Player.cpp这段代码 所以在编译期间我得到一个错误 我在Player.cpp使用了数百次board ,并且Player.cpp使用Player::都会对可读性和我的神经产生负面影响。 有没有办法逃离这个地狱? 我努力了 using Player::board;