1

我在我当前的一个项目中使用第三方 C++ 库。不过,他们的 lib 没有定义自定义命名空间。所以,他们所有的功能都在那里。这没什么大不了的,但理想情况下他们会使用命名空间。

是否可以将#include它们的头文件放在某种自定义的伪命名空间下?这样,它们的所有功能都可以包含在名称空间中。

4

2 回答 2

1

只要这会更改函数的名称(对于 C++ ),您就不能这样做。链接器会将命名空间的名称附加到函数中,因此链接将由于缺少函数而失败。

对于以下代码的实例

namespace MyName
{
    class MyNestedOne
    {
    public:
        void doNothing( );
    };
};

函数 doNothing 将具有以下名称 doNothing@MyNestedOne@MyName@@

于 2012-04-28T16:23:45.607 回答
0

正如您所说,如果它们在名称空间中会更好。然而,这并不是什么大问题。

或者,如果您能够使用 .dll 而不是 .lib,则可以动态绑定、使用它,然后放手。这样您就不会在整个运行时使用浮动函数。

于 2012-04-28T19:06:35.107 回答