www.mikrocontroller.net

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


Autor: Moritz Nöltner (mox-mox)
Datum:

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

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

einen Zeiger vom Typ tPortInfo*.
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

Autor: Wolfgang Mües (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ser_OpenComPort( tInfo );

Autor: Felix Nachname (time2ride)
Datum:

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

Autor: Moritz Nöltner (mox-mox)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi, danke für die schnellen Antowrten. Ich habe bei ausprobiert, mit
ser_OpenComPort( &t_Info );
bekomme ich die Fehlermeldung:
1>...\desktop\syncomapiv1_0\samples\syndrive\syndrive.cpp(47) : error 
C2065: 't_Info': nichtdeklarierter Bezeichner.
ser_OpenComPort( tInfo );
und
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
extern "C" DLL_IM_EXPORT HANDLE ser_OpenComPort( tPortInfo *tInfo );
 stammt von folgender Internetseite:
http://kk.elektronik-4u.de/index.php?Sid=14

Autor: Frager (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: Sven P. (haku) Benutzerseite
Datum:

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

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu dient das Forum "PC-Programmierung"???

...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja ... Hannes hats auf den Punkt gebracht.

Autor: Moritz Nöltner (mox-mox)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.