我在我当前的一个项目中使用第三方C ++ lib。但是,他们的lib没有定义自定义命名空间。所以,他们所有的功能都在那里。这不是什么大问题,但理想情况下他们已经使用了命名空间。
是否有可能#include
在某种自定义伪命名空间下的头文件?这样,它们的所有功能都可以包含在命名空间中。
答案 0 :(得分:1)
只要这会改变函数的名称(对于C ++),就不能这样做。 链接器会将命名空间的名称附加到函数中,因此由于缺少函数,链接将失败。
对于以下代码的实例
namespace MyName
{
class MyNestedOne
{
public:
void doNothing( );
};
};
函数doNothing将具有以下名称doNothing @ MyNestedOne @ MyName @@
答案 1 :(得分:0)
正如你所说,如果他们在命名空间中,那就更好了。然而,这并不是一个值得关注的问题。
或者如果你能够使用.dll而不是.lib,你可以动态绑定它,使用它,然后放手。这样你就不会有整个运行时的浮动函数。