I've been following the instructions on the BCI2000 wiki on how to build BCI2000 using Visual Studio.
General Info:
- Windows XP Professional - SP3
- BCI2000 v3.0
- Microsoft Visual Studio 2005
- Qt 4.6
I have followed all the steps in the wiki page (http://www.bci2000.org/wiki/index.php/P ... ild_System), but I get a few errors and with them a few questions.
I've been able to build the required Qt libs, specified in step 9.2 in the link above. But what am I to do with theses libs? The BCI2000 v3.0 also has qt libs included (in v3.0\src\extlib\qt\msvc\lib) and by the projects that are generated by the batch files in v3.0\build. Building the generated solution gives me linker errors:
Code: Select all
7>QtCored.lib(qfsfileengine_iterator_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::_Container_base_secure::_Container_base_secure(void)" (__imp_??0_Container_base_secure@std@@QAE@XZ)
Apart from that I also get errors in the file KeyLogger.cpp on MSLLHOOKSTRUCT, KBDLLHOOKSTRUCT, WH_KEYBOARD_LL, WH_MOUSE_LL, etc. When searching the internet, only russian and asian pages popped up, which I cannot read.
MSDN tells me that I should find the declarations winuser.h, included through windows.h (which is included in KeyLogger.cpp). However the definition of these structs is grey:
Code: Select all
#if (_WIN32_WINNT >= 0x0400)
/*
* Low level hook flags
*/
#define LLKHF_EXTENDED (KF_EXTENDED >> 8)
#define LLKHF_INJECTED 0x00000010
#define LLKHF_ALTDOWN (KF_ALTDOWN >> 8)
#define LLKHF_UP (KF_UP >> 8)
#define LLMHF_INJECTED 0x00000001
/*
* Structure used by WH_KEYBOARD_LL
*/
typedef struct tagKBDLLHOOKSTRUCT {
DWORD vkCode;
DWORD scanCode;
DWORD flags;
DWORD time;
ULONG_PTR dwExtraInfo;
} KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
/*
* Structure used by WH_MOUSE_LL
*/
typedef struct tagMSLLHOOKSTRUCT {
POINT pt;
DWORD mouseData;
DWORD flags;
DWORD time;
ULONG_PTR dwExtraInfo;
} MSLLHOOKSTRUCT, FAR *LPMSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT;
#endif // (_WIN32_WINNT >= 0x0400)
Code: Select all
#if(WINVER >= 0x0400)
/*
* Message structure used by WH_CALLWNDPROCRET
*/
typedef struct tagCWPRETSTRUCT {
LRESULT lResult;
LPARAM lParam;
WPARAM wParam;
UINT message;
HWND hwnd;
} CWPRETSTRUCT, *PCWPRETSTRUCT, NEAR *NPCWPRETSTRUCT, FAR *LPCWPRETSTRUCT;
#endif /* WINVER >= 0x0400 */
