我应该将DECLSPEC放在命名空间中的哪个位置?

时间:2010-11-16 23:42:07

标签: c++

给定以下命名空间,我在哪里放置我的declspec(用于dll导出)我希望将所述命名空间中的所有方法导出到DLL中?

namespace AguiText {
    void drawTextArea(AguiGraphicsManager *g, const AguiFont &font,const AguiRectangle &area,
        const AguiColor &color, const std::vector<std::string> &lines,
        AguiHorizontalAlignmentEnum horizontalAlignment, AguiVerticalAlignmentEnum verticalAlignment);

    void divideText(std::vector<std::string> &words, 
        const std::string &text,const AguiFont &font, int maxWidth = -1);
    void makeTextLines(const AguiFont &font,const std::vector<std::string> &words,
        std::vector<std::string> &lineWords, int maxWidth );
    void pointInTextArea(const AguiFont &font, 
        const AguiRectangle &area, const AguiPoint &point, 
        const std::vector<std::string> &lines, AguiRectangle &retRect,
        int &retIndex, AguiHorizontalAlignmentEnum horizontalAlignment, AguiVerticalAlignmentEnum verticalAlignment);

}

由于

1 个答案:

答案 0 :(得分:5)

无需导出命名空间。从编译代码的角度来看,名称空间是没有意义的。你不能在代码中引用它们,它们只是定义范围。

命名空间在名称修改过程中最终成为类/函数名称的一部分。一旦编译了源文件,它们就不是单独的实体。

如果要导出命名空间的内容,则需要导出这些实体,而不是命名空间本身。