2013-08-21 3 views
0

Я начал C++ совсем недавно, и у меня, очевидно, есть знаменитая проблема с LNK2019. Я бродил несколько часов в Google, но ничто не решило мою проблему. Мой проект на полпути закодирован, так как я отделяю представление и модель. Я работаю с Visual Studio 2010.Ошибка LNK2019 при связывании в VS2010

Вот класс, функция которого не извлекается:

Display.h:

#ifndef DEF_DISPLAY 
#define DEF_DISPLAY 
#include <Windows.h> 
#include <exception> 

class Display{ 

public: 
    HWND mainWindow, gameWindow; 
    WNDCLASS mainClass, gameClass; 

public: 
    Display(); 
    static LRESULT CALLBACK mainWindowProc(HWND mainWin, UINT message, WPARAM wParam, LPARAM lParam); 
    static LRESULT CALLBACK gameWindowProc(HWND gameWin, UINT message, WPARAM wParam, LPARAM lParam); 
    **int run();** // This function is not retrieved by the linker. 
}; 

#endif 

А вот Display.cpp:

#include "Display.h" 

HINSTANCE instanceMain = 0, instanceGame = 0; 

Display::Display(){...} 

LRESULT CALLBACK Display::mainWindowProc(HWND mainWin, UINT message, WPARAM wParam, LPARAM lParam){...} 

LRESULT CALLBACK Display::gameWindowProc(HWND gameWin, UINT message, WPARAM wParam, LPARAM lParam){...} 

int run(){ 
    MSG message; 

    while(GetMessage(&message, 0, 0, 0)){ 
    TranslateMessage(&message); 
    DispatchMessage(&message); 
    } 
    return message.wParam; 
} 

И, наконец, вот мой main.cpp:

#include "Display.h" 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow){ 

    Display game; 

    return game.run(); 
} 

я не закончил закодировать свой проект, потому что я узнал, что вопрос при построении его:

1> All outputs are up-to-date. 
1>main.obj : error LNK2019: unresolved external symbol "public: int __thiscall Display::run(void)" ([email protected]@@QAEHXZ) referenced in function [email protected] 
1>C:\Users\glembalis\Documents\Visual Studio 2010\Projects\pendu\Debug\pendu.exe : fatal error LNK1120: 1 unresolved externals 
1> 
1>Build FAILED. 

Я не знаю, где может произойти ошибка.

  1. Display.h и Display.cpp включены в проект
  2. Опция в проекте> Свойства> Linker> Система> SubSystem является "Windows"
  3. Я не использовать внешние библиотеки (только для Windows. ч и исключение)

Компилятор, похоже, работает хорошо. Мне все равно, работает ли программа правильно, я исправлю ее позже. На данный момент эта проблема с компоновщиком - моя главная проблема! Думаю, это всего лишь небольшая глупая ошибка, но я не могу ее найти!

Спасибо всем за ваше время и внимание, с нетерпением жду ответа! Наконец, я прошу прощения, но английский не мой родной язык, и я, возможно, написал некоторые ошибки.

Имейте славный день!

NoobFeeder

ответ

2

Ваше определение (реализация) имеет неправильную подпись.

Он должен выглядеть следующим образом:

int Display::run(){ 

Это говорит компилятору, что ваш run является тот, который является членом вашего Display класса.

В настоящее время вы внедрили бесплатную функцию под названием run.

Смежные вопросы