[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Problem bei C Fensterprogrammierung



Hallo Volker,

Volker Weißmann <volker.weissmann@gmx.de> (Mo 23 Dez 2013 22:42:10 CET):
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hallo,
> in der Datei /usr/include/X11/Xlib.h befindet sich:
> extern Display *XOpenDisplay(
>     _Xconst char*     /* display_name */
> );
> Wieso kann dann folgendes Programm nicht kompiliert werden?
Vermutlich kann es compiliert(!) werden, aber nicht gelinkt.

> #include <X11/Xlib.h>
> int main(void)
> {
>       XOpenDisplay(NULL);
>       return 0;
> }
> Laut eclipse ist in der Zeile
>       XOpenDisplay(NULL);
> "undefined Reference to 'XOpenDisplay'".

Dieser Fehler ist ein Linker-Problem, kein Compiler-Problem. Leider
(vermute ich), geht bei der Verwendung allzu integrierter IDEs dieses
Wissen um Präprozessor/Linker/Compiler etwas verloren.


> Was ist da das Problem?
> Auch
> #include <X11/Xlib.h>
> int main(void)
> {
>       const char c = 'a';
>       XOpenDisplay(&c);
>       return 0;
> }

Vermutlich fehlt dem Linker eine Bibliothek.

> führt zu dem selben Fehler.
> Bei
> #include "usr/include/X11/Xlib.h"

> heißt es dass es die Datei/Verzeichnis nicht gibt, obwohl es sie gibt.

Wenn Du es genau so geschrieben hast, dann fehlt der erste Slash im
Pfadnamen.  Und das ist ein Problem für den Präprozessor, nicht für den Compiler :)

Warum verwndest Du plötzlich "" statt <>? Der Präprozessor behandelt
beides unterschiedlich.

    Best regards from Dresden/Germany
    Viele Grüße aus Dresden
    Heiko Schlittermann
-- 
 SCHLITTERMANN.de ---------------------------- internet & unix support -
 Heiko Schlittermann, Dipl.-Ing. (TU) - {fon,fax}: +49.351.802998{1,3} -
 gnupg encrypted messages are welcome --------------- key ID: 7CBF764A -
 gnupg fingerprint: 9288 F17D BBF9 9625 5ABC  285C 26A9 687E 7CBF 764A -
(gnupg fingerprint: 3061 CFBF 2D88 F034 E8D2  7E92 EE4E AC98 48D0 359B)-

Attachment: signature.asc
Description: Digital signature


Reply to: