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 { ... };