Объявление функции класса ‘Struct в заголовке и определение в cpp. lnk2019 при использовании функции в отдельной библиотеке

Следующее построит нормально. Когда я пытаюсь использовать функцию в другой библиотеке, я получаю ошибки компоновщика.

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

#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;

}

В реальном коде есть ряд структур, определенных в классе. Поэтому я попытался сделать их вложенными классами с открытыми членами и функциями-членами. Аналогичная вещь: сборка библиотеки, lnk2019 при использовании функций в отдельной библиотеке. Другие функции в myClass работают нормально.

Он используется так:

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

myClass::myClassStruct aStruct;

FunctionThatInitialisesStruct( aStruct);

aStruct.someConvoludedFunction(1,2);

}
}

Есть что-то, что я делаю, что явно не так? Разве не стандартно, чтобы определения структурных функций объявлялись отдельно?

0

Решение

Вам необходимо экспортировать / импортировать символы для myClassStruct также.

Использование:

struct MY_EXPORT_MACRO myClassStruct { ... };
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]