Toon posts:

[C++] G15 LCDSDK programming

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben al een paar weken aan het proberen om in Borland C++ een programma te schrijven voor mijn Logitech G15.

Dit is de code die ik tot nu toe heb, dit is het aanroepen van het lcd scherm.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//---------------------------------------------------------------------------

#include <vcl.h>
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "lglcd.h"
#pragma comment(lib, "lglcd.lib")
using namespace std;
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

void HandleError(DWORD res, LPCTSTR msg)
{
    if(ERROR_SUCCESS != res)
    {
        LPTSTR lpMsgBuf;
        FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
            NULL,
            res,
            MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
            (LPTSTR) &lpMsgBuf,
            0, NULL);
        _tprintf(_T("%s: error 0x%08x occurred:\n%s\n"), msg, res, lpMsgBuf);
        LocalFree(lpMsgBuf);
        _tprintf(_T("press enter to exit\n"));
        _gettchar();
        exit(1);
    }
}


int main(int argc, char* argv[])
{

    DWORD res;

    //// initialize the library
    res = lgLcdInit();
    HandleError(res, _T("lgLcdInit"));

    //// connect to LCDMon
    // set up connection context
    lgLcdConnectContext connectContext;
    ZeroMemory(&connectContext, sizeof(connectContext));
    connectContext.appFriendlyName = _T("simple sample");
    connectContext.isAutostartable = TRUE;
    connectContext.isPersistent = TRUE;
    // we don't have a configuration screen
    connectContext.onConfigure.configCallback = NULL;
    connectContext.onConfigure.configContext = NULL;
    // the "connection" member will be returned upon return
    connectContext.connection = LGLCD_INVALID_CONNECTION;
    // and connect
    res = lgLcdConnect(&connectContext);
    HandleError(res, _T("lgLcdConnect"));

    // now we are connected (and have a connection handle returned),
    // let's enumerate an LCD (the first one, index = 0)
    lgLcdDeviceDesc deviceDescription;
    res = lgLcdEnumerate(connectContext.connection, 0, &deviceDescription);
    HandleError(res, _T("lgLcdEnumerate"));

    // at this point, we have an LCD
    _tprintf(_T("Found an LCD with %dx%d pixels, %d bits per pixel and %d soft buttons\n"),
        deviceDescription.Width, deviceDescription.Height, deviceDescription.Bpp,
        deviceDescription.NumSoftButtons);

        return 0;
}


//---------------------------------------------------------------------------


En nu blijf ik de volgende errors maar krijgen.

code:
1
2
3
[Linker Error] Unresolved external 'lgLcdInit' referenced from C:\G15TEST\TEST.OBJ
[Linker Error] Unresolved external 'lgLcdConnectA' referenced from C:\G15TEST\TEST.OBJ
[Linker Error] Unresolved external 'lgLcdEnumerate' referenced from C:\G15TEST\TEST.OBJ


Iemand die mij hier toevallig mee kan helpen? Of iemand hier al ervaring mee en mij verder op weg kan helpen?

Alvast bedankt :)

Bram.

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

je moet de .lib files meegeven aan de linker.

ASSUME makes an ASS out of U and ME


Verwijderd

Topicstarter
HIGHGuY schreef op zaterdag 29 juli 2006 @ 21:39:
je moet de .lib files meegeven aan de linker.
En hoe moet ik dat doen?

  • Thralas
  • Registratie: December 2002
  • Laatst online: 19:34
Volgens mij doet hij dat. Of hij linked in ieder geval tegen één lib:
code:
1
#pragma comment(lib, "lglcd.lib")

Nu zou dat moeten werken ervanuitgaande dat de externals die je nu mist er wel te vinden zouden moeten zijn.

Ik heb zelf alleen ervaring met de MSVC compiler/linker, misschien is comment(lib, "...") alleen geldig voor de MS linker? Daarnaast heb ik wel eens een lib gebruikt waar zowel Borland als MS versies voor waren, misschien is dat hier ook het geval?

Verwijderd

Topicstarter
Thralas schreef op zaterdag 29 juli 2006 @ 21:52:
Volgens mij doet hij dat. Of hij linked in ieder geval tegen één lib:
code:
1
#pragma comment(lib, "lglcd.lib")

Nu zou dat moeten werken ervanuitgaande dat de externals die je nu mist er wel te vinden zouden moeten zijn.

Ik heb zelf alleen ervaring met de MSVC compiler/linker, misschien is comment(lib, "...") alleen geldig voor de MS linker? Daarnaast heb ik wel eens een lib gebruikt waar zowel Borland als MS versies voor waren, misschien is dat hier ook het geval?
Krijg soortgelijke errors bij MSVC, maar hij zou het gewoon moeten doen, of ligt et nou aan mij 8)7

  • DroogKloot
  • Registratie: Februari 2001
  • Niet online

DroogKloot

depenisvanjezus

Is lglcd.lib de enige library die je hebt?

Overigens is het linken van een library via een #pragma bij mijn weten iets dat alleen in VS.NET kan.

[ Voor 189% gewijzigd door DroogKloot op 30-07-2006 00:15 ]


Verwijderd

Topicstarter
DroogKloot schreef op zaterdag 29 juli 2006 @ 23:44:
Is lglcd.lib de enige library die je hebt?

Overigens is het linken van een library via een #pragma bij mijn weten iets dat alleen in VS.NET kan.
Hoe link ik dan in Borland C++ ? Jah lglcd.lib is de enige library

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Heb je al eens op f1 gedrukt?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
.oisyn schreef op zondag 30 juli 2006 @ 14:50:
Heb je al eens op f1 gedrukt?
Ja, jij?

Verwijderd

Topicstarter
Nu met MVC++

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// test.cpp : Defines the entry point for the console application.
//

#pragma comment(lib, "lglcd.lib")
#include <global.h>
#include <stdafx.h>
#include <iostream>
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
#include <lglcd.h>




int main(int argc, char* argv[])
{
    // uncomment the following line if you don't want to have
    // the simulator window - by default it is shown in this alpha release
    lgLcdSimUseWindow(FALSE);

    DWORD res;

    //// initialize the library
    res = lgLcdInit();
    HandleError(res, _T("lgLcdInit"));
    
    //// connect to LCDMon
    // set up connection context
    lgLcdConnectContext connectContext;
    ZeroMemory(&connectContext, sizeof(connectContext));
    connectContext.appFriendlyName = _T("simple sample");
    connectContext.isAutostartable = TRUE;
    connectContext.isPersistent = TRUE;
    // we don't have a configuration screen
    connectContext.onConfigure.configCallback = NULL;
    connectContext.onConfigure.configContext = NULL;
    // the "connection" member will be returned upon return
    connectContext.connection = LGLCD_INVALID_CONNECTION;
    // and connect
    res = lgLcdConnect(&connectContext);
    HandleError(res, _T("lgLcdConnect"));

     // now we are connected (and have a connection handle returned),
    // let's enumerate an LCD (the first one, index = 0)
    lgLcdDeviceDesc deviceDescription;
    res = lgLcdEnumerate(connectContext.connection, 0, &deviceDescription);
    HandleError(res, _T("lgLcdEnumerate"));

    // at this point, we have an LCD
    _tprintf(_T("Found an LCD with %dx%d pixels, %d bits per pixel and %d soft buttons\n"),
        deviceDescription.Width, deviceDescription.Height, deviceDescription.Bpp,
        deviceDescription.NumSoftButtons);

    // open it
    lgLcdOpenContext openContext;
    ZeroMemory(&openContext, sizeof(openContext));
    openContext.connection = connectContext.connection;
    openContext.index = 0;
    // we have no softbutton notification callback
    openContext.onSoftbuttonsChanged.softbuttonsChangedCallback = NULL;
    openContext.onSoftbuttonsChanged.softbuttonsChangedContext = NULL;
    // the "device" member will be returned upon return
    openContext.device = LGLCD_INVALID_DEVICE;
    res = lgLcdOpen(&openContext);
    HandleError(res, _T("lgLcdEnumerate"));

    // coming back from lgLcdOpen, we have a device handle (in openContext.device)
    // which we will be using from now on until the program exits

    // load a bitmap onto the display (defined in samplebitmap.cpp)
    lgLcdBitmap160x43x1 bmp;
    bmp.hdr.Format = LGLCD_BMP_FORMAT_160x43x1;
    memcpy(&bmp.pixels, samplebitmap, sizeof(bmp.pixels));
    res = lgLcdUpdateBitmap(openContext.device, &bmp.hdr, LGLCD_SYNC_UPDATE(LGLCD_PRIORITY_NORMAL));
    HandleError(res, _T("lgLcdUpdateBitmap"));


En de errors

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
------ Build started: Project: test, Configuration: Debug Win32 ------
test : warning PRJ0009 : Build log could not be opened for writing.
Make sure that the file is not open by another process and is not write-protected.
Compiling...
test.cpp
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(49) : error C2146: syntax error : missing ';' before identifier 'Width'
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(49) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(49) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(50) : error C2146: syntax error : missing ';' before identifier 'Height'
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(50) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(50) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(51) : error C2146: syntax error : missing ';' before identifier 'Bpp'
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(51) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(51) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(52) : error C2146: syntax error : missing ';' before identifier 'NumSoftButtons'
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(52) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(52) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(66) : error C2146: syntax error : missing ';' before identifier 'Format'
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(66) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(66) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(72) : error C2146: syntax error : missing ';' before identifier 'pixels'
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(72) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(72) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(93) : error C2065: 'WINAPI' : undeclared identifier
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(93) : error C2065: 'lgLcdOnSoftButtonsCB' : undeclared identifier
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(93) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\logitech\g-series software\sdk\sdk\src\lcdui\lglcd.h(93) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Build log was saved at "file://c:\g15test\test\test\Debug\BuildLog.htm"
test - 22 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11:20
Iha kunnen compiler en linker errors gemakkelijk opgelost worden door de documentatie van de compiler/library te lezen en een beetje gezond verstand te gebruiken.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:21

Creepy

Tactical Espionage Splatterer

En wat kwam daar uit? Een pragma is niet genoeg om een LIB te includen in Borland C++ Builder. En leuker nog: een kant en klare lib geschikt voor MS VC is NIET direct bruikbaar in Borland C++ Builder. Over dit probleem zijn al wat topics te vinden met de search.

Daarnaast vergeet je in je startpost te vermelden welke zaken je nu precies zelf hebt geprobeerd en wat daar niet mee lukte. Het is niet de bedoeling om hier je foutmeldingen te dumpen en maar te hopen dat wij het voor je gaan oplossen. We verwachten ook enige inzet van jouw kant en we verwachten ook dat je aangeeft welke zaken je hebt geprobeerd en wat daar niet mee lukte.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1