Я пытаюсь создать свою первую простую DLL. У меня есть класс (это одноэлементный класс) и функция оконной процедуры, которую я объявляю в DLL и хочу импортировать в свой проект позже.Моя IDE - Microsoft Visual C ++ 2010, а мой проект - библиотека Win32 DLL, и я использовал шаблон DLL по умолчанию MSVC ++ (вы знаете, как он создает все файлы по умолчанию при создании проекта).
НоЯ получаю эти ошибки компиляции, которые я не понимаю, что не так?
1> c: \ users \ soribo \ dropbox \ c ++ Программирование \ Visual C ++ Программирование \ testcreatedll \ testcreatedll \ dlltest.h (15): ошибка C2059: синтаксическая ошибка: '__declspec (dllimport)'
1> c: \ users \ soribo \ dropbox \ c ++ программирование \ Visual C ++ программирование \ testcreatedll \ testcreatedll \ dlltest.h (39): ошибкаC2065: 'TestWndProc': необъявленный идентификатор
1> c: \ users \ soribo \ dropbox \ c ++ программирование \ визуальное программирование на c ++ \ testcreatedll \ testcreatedll \ dlltest.cpp (7): предупреждение C4273: 'testStaticVar': несовместимая связь dll
1> c: \ users \ soribo \ dropbox \ c ++ Программирование \ Visual C ++ Программирование \ testcreatedll \ testcreatedll \ dlltest.h (21): см. Предыдущее определение 'public: static bool MyTest :: TestClass :: testStaticVar'
1> c: \ users \ soribo \ dropbox \ c ++ программирование \ визуальное программирование на c ++ \ testcreatedll \ testcreatedll \ dlltest.cpp (7): ошибка C2491: 'MyTest :: TestClass :: testStaticVar': определение члена статических данных dllimportне разрешено
1> c: \ users \ soribo \ dropbox \ c ++ программирование \ визуальное программирование на c ++ \ testcreatedll \ testcreatedll \ dlltest.cpp (8): предупреждение C4273: 'instance': несогласованная связь dll
1> c: \ users \ soribo \ dropbox \ программирование на c ++ \ программирование на визуальном языке c ++ \ testcreatedll \ testcreatedll \ dlltest.h (35): см. предыдущее определение 'private: static MyTest :: TestClass * MyTest :: TestClass :: instance'
1> c: \ users \ soribo \ dropbox \ c ++ Программирование \ Visual C ++ Программирование \ testcreatedll \ testcreatedll \ dlltest.cpp (8): ошибка C2491: 'MyTest :: TestClass :: instance': определение элемента статических данных dllimport запрещено
Мой простой файл заголовка:
#ifndef DLLTEST_H
#define DLLTEST_H
#include <windows.h>
// This is from a tutorial I am following
#ifdef _CLASSINDLL
#define CLASSINDLL_CLASS_DECL __declspec(dllexport)
#else
#define CLASSINDLL_CLASS_DECL __declspec(dllimport)
#endif
namespace MyTest
{
LRESULT CALLBACK CLASSINDLL_CLASS_DECL TestWndProc( HWND hwnd, UINT msg, LPARAM lParam, WPARAM wParam );
class CLASSINDLL_CLASS_DECL TestClass
{
// Singleton class
public:
static bool testStaticVar;
static TestClass* getInstance()
{
if ( instance == NULL ) { instance = new TestClass(); }
return instance;
}
void add()
{
myMember++;
}
private:
static TestClass* instance;
WNDPROC myProc;
int myMember;
TestClass() : myMember(0) { myProc = (WNDPROC)&TestWndProc; }
~TestClass() {}
};
}
#endif // DLLTEST_H
Мой простой файл cpp:
#include "stdafx.h"
#include "DLLTest.h"
namespace MyTest
{
// Create/Initialise? Class Static variables
bool TestClass::testStaticVar = false;
TestClass* TestClass::instance = NULL;
LRESULT CALLBACK TestWndProc( HWND hwnd, UINT msg, LPARAM lParam, WPARAM wParam )
{
switch (msg)
{
case WM_CREATE:
{
}
break;
default:
break;
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
}