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

jma*_*erx 6 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);

}
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 7

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

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

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

  • 我不知道我是否会说“不需要导出命名空间”。无法导出命名空间。`__declspec(dllexport/dllimport)` 只能应用于类型、函数或变量声明。 (2认同)