Forum: PC-Programmierung Wie ruft man diese Funktion in c++ auf?


von Moritz N. (mox-mox)


Lesenswert?

Hi,
Ich arbeite mit VC++ Express und will folgende Funktion, aufrufen:
1
// :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2
/*! \brief  Initialisation and opening of a Comport.
3
 *  \param  *tInfo = Pointer to comport init data structur. 
4
 *  \return HANDLE = Handle to an open Comport or INVALID_HANDLE_VALUE. */
5
extern "C" DLL_IM_EXPORT HANDLE ser_OpenComPort( tPortInfo *tInfo );

Weiterhin habe ich mit
1
tPortInfo t_info;
2
tPortInfo* tInfo = &t_info;

einen Zeiger vom Typ tPortInfo*.
1
ser_OpenComPort(*tInfo );
liefert aber folgende Fehler:
"error C2664: 'ser_OpenComPort': Konvertierung des Parameters 1 von 
'tPortInfo' in 'tPortInfo *' nicht möglich"

Bin leider noch Anfänger, und bin durch googlen nicht weitergekommen, 
was aber auch daran liegen mag, dass ich nicht wirklich weiß, wonach ich 
genau suchen sollte.
Darum meine Frage: Wie muss ein Funktionsaufruf für so eine Funktion 
aussehen?


Gruß,
mox-mox

von Wolfgang Mües (Gast)


Lesenswert?

ser_OpenComPort( tInfo );

von Felix N. (time2ride)


Lesenswert?

ser_OpenComPort( &t_Info );
Geht auch, dann brauchst du keine zusätzliche Variable.

von Moritz N. (mox-mox)


Angehängte Dateien:

Lesenswert?

Hi, danke für die schnellen Antowrten. Ich habe bei ausprobiert, mit
1
ser_OpenComPort( &t_Info );
bekomme ich die Fehlermeldung:
1>...\desktop\syncomapiv1_0\samples\syndrive\syndrive.cpp(47) : error 
C2065: 't_Info': nichtdeklarierter Bezeichner.
1
ser_OpenComPort( tInfo );
und
1
ser_OpenComPort( &t_info );
liefern beide
1>SynDrive.obj : error LNK2019: Verweis auf nicht aufgelöstes externes 
Symbol "_ser_OpenComPort" in Funktion ""long __stdcall ComSet(struct 
HWND__ *,unsigned int,unsigned int,long)" 
(?ComSet@@YGJPAUHWND__@@IIJ@Z)".
1>.\Debug/SynDrive.exe : fatal error LNK1120: 1 nicht aufgelöste externe 
Verweise.

Ich nehme mal an, dass der Fehler somit nicht im Funktionsaufruf liegt, 
sondern woanders.
Das Programm, an dem ich gerade Arbeite, soll ein Beispielprgramm von 
Synaptics um die Möglichkeit, Daten über die Serielle Schnittstelle zu 
versenden erweitern. Ich hänge das Projekt einfach mal als Dateianhang 
an. Bis jetzt ist jedoch noch nicht viel dabei herausgekommen.
Die Funktion
1
extern "C" DLL_IM_EXPORT HANDLE ser_OpenComPort( tPortInfo *tInfo );
 stammt von folgender Internetseite:
http://kk.elektronik-4u.de/index.php?Sid=14

von Frager (Gast)


Lesenswert?

a)
warum eine extra dll von einem Drittanbieter???
Besser ist eine Klasse, wenn du C++ machst.

b)
Den COM Port zu öffnen, sollte man selbst implementieren können,
gehört zum Standard Repertoire.

c)
Dein Compiler ist fehlerfrei durchgelaufen. Jetzt meckert der linker.
Du mußt noch gegen die comport lib linken.

d)
Warum_ _schaust_ _du_ _nicht in die mitgelieferte Beispielapplikation, 
da steht alles drin???

von Sven P. (Gast)


Lesenswert?

> 't_Info': nichtdeklarierter Bezeichner
Das kommt von der falschen Groß- und Kleinschreibung.

von Hannes Lux (Gast)


Lesenswert?

Wozu dient das Forum "PC-Programmierung"???

...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tja ... Hannes hats auf den Punkt gebracht.

von Moritz N. (mox-mox)


Lesenswert?

Frager wrote:
> a)
> warum eine extra dll von einem Drittanbieter???
> Besser ist eine Klasse, wenn du C++ machst.
>
> b)
> Den COM Port zu öffnen, sollte man selbst implementieren können,
> gehört zum Standard Repertoire.

Da hast Du natürlich recht, das wäre schon fein, das mit einer Klasse zu 
machen, und vor allem selbst. Aber erstens muss ich nicht immer das Rad 
neu erfinden, und zum anderen gehöre ich zu den Menschen, die wirklich 
noch sehr wenig Ahnung von C++ haben. Mit C komm ich ein wenig besser 
klar, aber bis jetzt ausser "Hello World" auch noch nicht wirklich auf 
dem PC, sondern nur auf µC. Und Du wirst mir zustimmen müssen, dass da 
manches einfacher ist/scheint, bevor man wirklich eine ganze Menge Zeit 
investiert hat. Und ich für meinen Teil möchte zwar durchaus gerne C++ 
erlernen, aber Priorität hat eben jetzt ersteinmal mein Bot bzw. dessen 
Steuerung (UND Abi...), und dafür brauch ich das Programm. Das soll vor 
allem funktionieren, nicht schön sein, sowas kommt später, wenn ich Zeit 
habe, C++ richtig zu lernen.

> c)
> Dein Compiler ist fehlerfrei durchgelaufen. Jetzt meckert der linker.
> Du mußt noch gegen die comport lib linken.

Danke für den Tipp, hat das Problem gelöst.

> d)
> Warum_ _schaust_ _du_ _nicht in die mitgelieferte Beispielapplikation,
> da steht alles drin???

Die Frage mag jetzt etwas doof kleingen, aber von welcher 
Beispielaplikation sprichst Du gerade?

@Hannes Lux & Rufus t. Firefly
Habt Recht, ich bin bein Threaderstellen abgerutscht, eigentlich soltte 
das dahin wo es jetzt ist. Danke fürs Verschieben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.