C++ 名称空间的DECLSPEC应该放在哪里?

C++ 名称空间的DECLSPEC应该放在哪里?,c++,C++,给定以下名称空间,我将declspec(用于dll导出)放在哪里?我希望将所述名称空间中的所有方法导出到dll中 namespace AguiText { void drawTextArea(AguiGraphicsManager *g, const AguiFont &font,const AguiRectangle &area, const AguiColor &color, const std::vector<std::string&g

给定以下名称空间,我将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);

}
namespace AguiText{
无效drawTextArea(AguiGraphicsManager*g、const AguiFont和font、const AguiRectangle和area、,
常量颜色和颜色,常量标准::向量和线,
AguiHorizontalAlignment枚举水平对齐,AguiverticalAlignment枚举垂直对齐);
void divideText(标准::向量和单词,
常量std::字符串和文本,常量AguiFont和字体,int maxWidth=-1);
void makeTextLines(const AguiFont和font,const std::vector和words,
std::向量和行字,int maxWidth);
void pointInTextArea(const AguiFont&font,
const AguiRectangle&area、const AguiPoint&point、,
常数标准::向量和直线,方向角和方向角,
int&retIndex、AGUIHORIONTALLIGNEMN水平路线、AGUIVERTICALIGNEMN垂直路线);
}

谢谢

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

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


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

必须在头文件中声明函数模板(除非您计划仅为一组特定参数对其进行实例化)。因此无需导出。@AguiText命名空间如何?那么我在哪里添加Aguiu DECLSPEC以便导出其中的函数,如drawTextArea?我是否执行Aguiu DECLSPEC void someThing();函数和类是要导出的实际实体,因此您可以将
\uu declspec
放在这些实体周围。将名称空间视为在函数上粘贴的小标签。贴纸本身并没有定义一个实体,它们只是装饰其他东西。它们不定义可用对象。它们只是标记,我不知道我是否会说“不需要导出名称空间”。无法导出命名空间
\u declspec(dllexport/dllimport)
只能应用于类型、函数或变量声明。向.h中的声明添加u declspec(dllexport)可解决此问题