Ошибка связи в приложении C ++ / CLI, связывающем статическую библиотеку C ++ / CLI - PullRequest
4 голосов
/ 14 октября 2011

У меня есть статическая библиотека 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.Я не понимаю, почему.

Я был бы очень признателен, если бы кто-нибудь мог привести какое-либо объяснение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...