Проект не линкуется
Создаю новый класс CGraph
Описываю интерфейс в файле graph.h
#if !graph_h
#define graph_h 1
#include <windows.h>
class CGraph
{
private:
HWND hWnd;
HDC hDC;
public:
CGraph(HWND);
~CGraph();
};
#endif
Реализация размещена в файле graph.cpp
#include "graph.h"
int status;
CGraph::CGraph(HWND hWnd_)
{
hWnd=hWnd_;
RECT Rect;
HDC hDC;
status=GetClientRect(hWnd,&Rect);
hDC = GetDC(hWnd);
}
CGraph::~CGraph()
{
status=ReleaseDC(hWnd,hDC);
}
После создаю указатель на экземпляр класса в одном проекте (предварительно включаю в проект файл graph.cpp) - файл parser.cpp (подпрограмма вызывается при нажатии на кнопку)
...
afx_msg void CMainWin::OnCommand_Risov()
{
CGraph *graph=new CGraph(this->m_hWnd);
}
...
Проект нормально компилируется, но при линковке появляется сообщение
parser.obj : error LNK2001: unresolved external symbol "public: __thiscall CGraph::CGraph(struct HWND__ *)" (??0CGraph@@QAE@PAUHWND__@@@Z)
Debug/parser.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
В чем дело? В файле graph.cpp используется обычное API, в проекте parser - MFC (в опциях стоит "Use MFC in a static library").
На счет эррора, то Ты хочеш заюзать HWND окна сделанного на МФЦ из класса написаного на WINAPI. ИМХО ничего хорошего из этого не выйдет.
Цитата:
Originally posted by Matush
Я смотрю уже кипит работа по созданию графиков разбора математической строки :)
На счет эррора, то Ты хочеш заюзать HWND окна сделанного на МФЦ из класса написаного на WINAPI. ИМХО ничего хорошего из этого не выйдет.
Я смотрю уже кипит работа по созданию графиков разбора математической строки :)
На счет эррора, то Ты хочеш заюзать HWND окна сделанного на МФЦ из класса написаного на WINAPI. ИМХО ничего хорошего из этого не выйдет.
Да, хорошая тема для студентов института...
С этим уже понятно. Просто если поставить после
#include <windows.h> строку #include <afxwin.h>, то все будет нормально компилироваться и линковаться. Почему - не знаю.
Поэтому MFC и API уживаются, дело в чем-то другом.