Компоновщик не может найти определения функций, неразрешенный внешний символ LNK2001

Вот моя простая установка: (я скрыл много ненужной информации)

//AutoFocusTest.h
#include "camAVTEx.h"

class CAutoFocusTestApp : public CWinApp
{
protected:
    camera_t* mCamera;

public:
    virtual BOOL InitInstance();
};

//camAVTEx.h
class camera_avtcam_ex_t : public camera_t
{
public:
    camera_avtcam_ex_t();
    virtual ~camera_avtcam_ex_t();

    //member variables

    //member function declarations
}

//camAVTEx.cpp
#include "camAVTEx.h"

camera_avtcam_ex_t::camera_avtcam_ex_t()
{
    //stuff
}

camera_avtcam_ex_t::~camera_avtcam_ex_t()
{
    //stuff
}

//the rest are defined here in my program

//AutoFocusTest.cpp
#include AutoFocusTest.h

BOOL CAutoFocusTestApp::InitInstance()
{
    mCamera = new camera_avtcam_ex_t();
}

Эта установка выдает ошибку:

3> AutoFocusTest.obj: ошибка LNK2001: неразрешенный внешний символ "public: __cdecl camera_avtcam_ex_t::camera_avtcam_ex_t(void)" (??0camera_avtcam_ex_t@@QEAA@XZ)

Из всего, что я читал об этой относительно распространенной проблеме, я не связал что-то, из-за чего определения моей функции camera_avtcam_ex_t не были найдены. Однако я не могу понять, что я мог пропустить. Я добавил все включаемые каталоги и каталоги библиотек, а также добавил файлы библиотек в раздел дополнительных зависимостей.

Может ли кто-нибудь обнаружить что-нибудь, что я мог бы пропустить?


person xcdemon05    schedule 13.03.2013    source источник
comment
Вы наверняка имеете в виду mCamera = new camera_avtcam_ex_t(); или нет?   -  person Leo Chapiro    schedule 13.03.2013
comment
////class function definitions на самом деле не определяет функции, вы это знаете, верно?   -  person Luchian Grigore    schedule 13.03.2013
comment
Определения конструктора и деструктора по умолчанию. В частности, в опубликованной вами ошибке упоминается конструктор по умолчанию camera_avtcam_ex_t.   -  person jrok    schedule 13.03.2013
comment
@duDE, какое это имеет значение?   -  person Luchian Grigore    schedule 13.03.2013
comment
@duDE да, извините, я просто неправильно набрал здесь   -  person xcdemon05    schedule 13.03.2013
comment
@LuchianGrigore да, знаю. я просто не хотел набирать 20 функций, таких как camera_avtcam_ex_t::camera_avtcam_ex_t(){ blah blah }; camera_avtcam_ex_t::Whatever(){ blahblahblah };, когда можно было бы легко предположить, что это то, что я действительно сделал   -  person xcdemon05    schedule 13.03.2013
comment
Какую команду вы вызываете для сборки?   -  person jrok    schedule 13.03.2013
comment
@jrok Я только что нажал F7, это стандартная сборка. Однако я также сделал несколько чистых / перестроенных, и они тоже не сработали.   -  person xcdemon05    schedule 13.03.2013
comment
Вы действительно добавили этот camAVTEx.cpp файл в свой проект?   -  person Terenty Rezman    schedule 13.03.2013
comment
возможный дубликат неразрешенный внешний символ, не могу понять, почему   -  person Roddy    schedule 13.05.2013


Ответы (1)


Предполагая, что вы определили конструктор для своего camera_avtcam_ex_t, он объявлен как private, вы не можете создать его экземпляр.

person SomeWittyUsername    schedule 13.03.2013
comment
Нет, это общедоступно, я просто забыл указать это, когда набирал вопрос. - person xcdemon05; 13.03.2013