Wie ruft man diese Funktion in c++ auf?

OP #1222010
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
OP
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
Angehängte Dateien:
Gast
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???
OP
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.