C++ 类的结构在标头中的函数声明和cpp中的定义。lnk2019在单独库中使用函数时

C++ 类的结构在标头中的函数声明和cpp中的定义。lnk2019在单独库中使用函数时,c++,struct,translation-unit,C++,Struct,Translation Unit,以下内容将很好地构建。当我尝试在另一个库中使用函数时,会出现链接器错误 OtherClass.obj : error LNK2019: unresolved external symbol "public: float __cdecl myClass::myClassStruct::myConvoludedFunction(int,int)" (?myConvoludedFunction@myClassStruct@myClass@@QEAAMHH_N@Z) referenced in func

以下内容将很好地构建。当我尝试在另一个库中使用函数时,会出现链接器错误

OtherClass.obj : error LNK2019: unresolved external symbol "public: float __cdecl myClass::myClassStruct::myConvoludedFunction(int,int)" (?myConvoludedFunction@myClassStruct@myClass@@QEAAMHH_N@Z) referenced in function "public: __cdecl myNamespace::OtherClass::OtherClassFunc(class myNamespace::Something &)" (??0OtherClass@myNamespace@@QEAA@AEAVDtDe@1@@Z)
标题:

   class MY_EXPORT_MACRO myClass
   {
    public:
        myClass();
        ~myClass();
        struct myClassStruct
        {
            int var1
            int var2
            float myConvoludedFunction(int,int);
        }
    }
cpp

在实际代码中,类中定义了许多结构。所以我试着让它们都是带有公共成员和成员函数的嵌套类。类似的事情:lib builds,在单独的lib中使用函数时为lnk2019。myClass中的其他函数工作正常

它是这样使用的:

#include myClass.h
namespace myNameSpace
{
    OtherClass::OtherClassFunc(Something & athing)
    {
        myClass * object = new myClass();

        myClass::myClassStruct aStruct;

        FunctionThatInitialisesStruct( aStruct);

        aStruct.someConvoludedFunction(1,2);

    }
}

我在做什么明显是错的吗?单独声明结构函数定义不是标准吗?

您还需要导出/导入myClassStruct的符号

使用:


这道题打错了。我删除了很多我正在使用的代码。修正了。即使结构是在导出类中声明的?现在可以编译了。仍然不知道如果在导出的类中声明了struct export宏,为什么它需要struct export宏。我以为这意味着课堂上的一切都被输出了。是的。如果嵌套类是实现细节,则类可能不希望DLL的用户使用其嵌套类。你知道的越多。那么,在导出的类中还没有导出什么呢?所有的成员变量和成员函数都会被导出。如果内存正常,则只导出嵌套类。
#include myClass.h
namespace myNameSpace
{
    OtherClass::OtherClassFunc(Something & athing)
    {
        myClass * object = new myClass();

        myClass::myClassStruct aStruct;

        FunctionThatInitialisesStruct( aStruct);

        aStruct.someConvoludedFunction(1,2);

    }
}
struct MY_EXPORT_MACRO myClassStruct { ... };