У меня есть статическая библиотека C ++ / CLI, в которой определен следующий класс:
ObjectWrapper.h:
public ref class CObjectWrapper: System::Object
{
public:
CObjectWrapper(CObject& wrappedObject);
explicit operator CObject*();
private:
CObject& m_WrappedObject;
};
ObjectWrapper.cpp:
#include "stdafx.h"
#include "BasicObjectWrapper.h"
CObjectWrapper::CObjectWrapper(CObject& wrappedObject)
: WrappedObject(wrappedObject)
{ }
CObjectWrapper::operator CObject*()
{
return &WrappedObject;
}
У меня есть приложение C ++ / CLI, которое связано со статической библиотекой.По ссылке возникают следующие ошибки:
Ошибка 3, ошибка LNK2020: неразрешенный токен (06000007) CObjectWrapper::.ctor
KCBrowserInEcrinView.obj
Ошибка 4, ошибка LNK2020: неразрешенный токен (06000005) CObjectWrapper::.ctor
KCBrowserLibD9.lib
Ошибка 5, ошибка LNK2020: неразрешенный токен (06000008) CObjectWrapper::op_Implicit
KCBrowserInEcrinView.obj
Ошибка 6, ошибка LNK2020: неразрешенный токен (06000006) CObjectWrapper::op_Implicit
KCBrowserL*
Я решил проблему, переместив реализацию (ранее находившуюся в файле .cpp) в файл .h.Я не понимаю, почему.
Я был бы очень признателен, если бы кто-нибудь мог привести какое-либо объяснение.