Class' header中的Struct函数声明和cpp中的定义。 lnk2019 在单独的库中使用函数时
Class' Struct's function declaration in header and definition in cpp. lnk2019 when using function in separate lib
以下将构建良好。当我尝试使用不同库中的函数时,出现链接器错误。
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)
Header:
class MY_EXPORT_MACRO myClass
{
public:
myClass();
~myClass();
struct myClassStruct
{
int var1
int var2
float myConvoludedFunction(int,int);
}
}
cpp
#include "myClass.h"
myClass::myClass()
{
//something initialisy
}
myClass::~myClass()
{
//something destructiony
}
float myClass::myClassStruct::myConvoludedFunction(int a, int b)
{
//Something convoluded and secret
return 0;
}
在实际代码中,class 中定义了一些结构。所以我试着让它们都嵌套 classes 与 public 成员和成员函数。类似的事情:在单独的库中使用函数时,库构建,lnk2019。 myClass 中的其他函数工作正常。
它是这样使用的:
#include myClass.h
namespace myNameSpace
{
OtherClass::OtherClassFunc(Something & athing)
{
myClass * object = new myClass();
myClass::myClassStruct aStruct;
FunctionThatInitialisesStruct( aStruct);
aStruct.someConvoludedFunction(1,2);
}
}
我做的事情有明显错误吗? struct函数定义单独声明不是标准吗?
您还需要 export/import myClassStruct
的符号。
使用:
struct MY_EXPORT_MACRO myClassStruct { ... };
以下将构建良好。当我尝试使用不同库中的函数时,出现链接器错误。
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)
Header:
class MY_EXPORT_MACRO myClass
{
public:
myClass();
~myClass();
struct myClassStruct
{
int var1
int var2
float myConvoludedFunction(int,int);
}
}
cpp
#include "myClass.h"
myClass::myClass()
{
//something initialisy
}
myClass::~myClass()
{
//something destructiony
}
float myClass::myClassStruct::myConvoludedFunction(int a, int b)
{
//Something convoluded and secret
return 0;
}
在实际代码中,class 中定义了一些结构。所以我试着让它们都嵌套 classes 与 public 成员和成员函数。类似的事情:在单独的库中使用函数时,库构建,lnk2019。 myClass 中的其他函数工作正常。
它是这样使用的:
#include myClass.h
namespace myNameSpace
{
OtherClass::OtherClassFunc(Something & athing)
{
myClass * object = new myClass();
myClass::myClassStruct aStruct;
FunctionThatInitialisesStruct( aStruct);
aStruct.someConvoludedFunction(1,2);
}
}
我做的事情有明显错误吗? struct函数定义单独声明不是标准吗?
您还需要 export/import myClassStruct
的符号。
使用:
struct MY_EXPORT_MACRO myClassStruct { ... };