Ошибки LNK2019 и LNK2028 в VC ++ Express 2008 - PullRequest
1 голос
/ 13 января 2012

Я пытаюсь построить решение с 2 проектами и получить следующие сообщения об ошибках:

ColliderTest.obj: ошибка LNK2028: неопределенный токен (0A000080) "public: __thiscall Rect :: Rect (int)"(?? 0Rect @@ $$ FQAE @ XZ), на который есть ссылка в функции "void __cdecl myFunction (void)" (? MyFunction @@ $$ FYAXXZ)

ColliderTest.obj: ошибка LNK2019: неразрешенный внешний символ "public: __thiscall Rect :: Rect (int) "(?? 0Rect @@ $$ FQAE @ XZ), на который ссылается функция" void __cdecl myFunction (void) "(? myFunction @@ $$ FYAXXZ)

Код:

  • В проекте "Коллайдер" у меня есть следующие файлы:

Collider.h

#pragma once

class Rect{

    int x;
    int y;
    unsigned int w;
    unsigned int h;

public:
    Rect(int x);
};

Collider.cpp

#include "Collider.h"

Rect::Rect(int x){
    this->x = x;
}
  • Проект "ColliderTest" имеет ссылку на проект Collider, и этот файл:

ColliderTest.cpp

#include "../app/Collider.h"

void myFunction();

void myFunction(){

    Rect rect(4);
}

Также каждый проект имеетфайл main.cpp с пустой функцией main (), чтобы избежать жалоб компилятора на точку входа.

1 Ответ

2 голосов
/ 13 января 2012

Оба проекта имеют основную функцию?

Это означает, что вы создаете два исполняемых файла. Исполняемые файлы обычно не экспортируют функции.

Вам нужен один исполняемый файл и одна библиотека классов (dll).

Кстати: если у вас пустая основная функция, как вы узнаете, работает ли ваша программа?

...