Fehler: CALL _SendMessageA@16 (Linux)

Für allgemeine Fragen zur Programmierung mit PureBasic.
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Fehler: CALL _SendMessageA@16 (Linux)

Beitrag von walker »

Hi,

wenn ich meinen Source-code über die IDE kompiliere, bekomme ich bei eingeschaltetem Debugger den Fehler

Code: Alles auswählen

Error: Assember purebasic.asm [5504]: CALL _SendmessageA@16 error: undefined Symbol.
Frage: ist die [5504] die Zeilennummer im ASM-Output??

Hier wäre der fragliche Teil...

Code: Alles auswählen

; Select lang$
  PUSH   dword [v_lang$]
; Case "de"
  MOV    edx,_S95
  MOV    ecx,[esp]
  CALL   SYS_StringEqual  -------Dies ist die Zeile 5504
  CMP    eax,0
  JE    _Case7
Der Output an der Konsole sieht so aus:

Code: Alles auswählen

Loading external modules...
Starting compilation...
Including source: Common.pb
Including source: sqlite3.pbi
Including source: function.pbi
3453 lines processed.
Creating the executable.
Error: Assembler
purebasic.asm [5502]:
 CALL   _SendMessageA@16
error: undefined symbol.
bei ausgeschaltetem Debugger läuft alles....
Am Source liegt es wohl nicht... erst beim Erstellen der exe kommt der Fehler.... :?
Kann mir jemand sagen, was hier falsch ist?
(bleibt noch anzumerken, das an der Konsole die Nummer 5502 ausgegeben wird....)

Danke
Ulf
Benutzeravatar
nightsky
Beiträge: 9
Registriert: 08.09.2004 12:42
Kontaktdaten:

Beitrag von nightsky »

Tach!

Ich würde einfach mal behaupten es handelt sich bei SendMessageA@16 um die 16-Bit-Version einer Win32 API Funktion. Diese steht unter Linux selbstverständlich nicht zur Verfügung. Ergo bekommst Du einen Fehler, dass das Symbol (die Funktion) nicht aufgelöst (verlinkt) werden kann.

CU!
Markus
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Beitrag von walker »

Hi,

hmm.... aber da ich ausschließlich PB-Befehle verwende (um das Programm unter Linux und Win erstellen zu können) müsste es ja ein Fehler im Compiler/Linker sein... :roll:

cu
Ulf
traumatic
Beiträge: 478
Registriert: 27.11.2004 15:42

Beitrag von traumatic »

nightsky hat geschrieben:Ich würde einfach mal behaupten es handelt sich bei SendMessageA@16 um die 16-Bit-Version einer Win32 API Funktion.
"16bit" einer "Win32" *sigh* Wie kommst Du darauf? Wg. @16 vielleicht? :roll: Aua...
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Beitrag von walker »

traumatic hat geschrieben:
nightsky hat geschrieben:Ich würde einfach mal behaupten es handelt sich bei SendMessageA@16 um die 16-Bit-Version einer Win32 API Funktion.
"16bit" einer "Win32" *sigh* Wie kommst Du darauf? Wg. @16 vielleicht? :roll: Aua...
Soooo genau hatte ich das garnicht gelesen /:-> ... sonst keiner einen brauchbaren Hinweis? Keiner unter Linux den Fehler bekommen?
Ich glaube, ich werde das mal im englischen Forum posten.... vielleicht ist's ja tatsächlich ein Fehler im Compiler/Linker...

cu
Ulf
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag von DrShrek »

Dieses <...>@<nr> nennt sich 'Name mangeling'
Rest ist Google-Sache
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Code: Alles auswählen

Error: Assember purebasic.asm [5504]: CALL _SendmessageA@16 error: undefined Symbol.
Falls du wirklich nur PB Befehle verwendet hast und nix Like: SendMessage_(bla...) im Code stehen hast dann -> Englisches Forum Bug Report Posten.
Benutzeravatar
Justy
Beiträge: 131
Registriert: 10.09.2004 13:31
Wohnort: Feldbach / Steiermark / Österreich
Kontaktdaten:

Beitrag von Justy »

Hast du darauf geachtet dass du nur Befehle verwendet hast, die für Linux freigegeben sind?
Ist jetzt vll ein bisschen blöd ausgedrückt aber in der Holfe steht unten ja für welche BSe der Befehl ist! WebGadget ist glaube ich z.b. ein reiner Windows-Befehl!

Da PB intern teilweise auch API verwendet würde ich das nicht unbedingt als Fehler des Linkers/Compilers bezeichnen!

mfg. Justy
Am Anfang erschuf der Mensch Gott.
Friedrich Nietzsche
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

CALL _SendMessageA@16 heißt soviel wie rufe den deklarierten Befehl SendMessageA mit der Parameterlänge 16byte auf. Diese werden durch PUSH und POP übergeben ;) . SendMessage_ dürfte der Befehl sein. Allerdings sollte der in Linux nichts zu suchen haben :P .
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Beitrag von Rings »

Code: Alles auswählen

Including source: sqlite3.pbi
sqlite unter Linux ?????
Rings hat geschrieben:ziert sich nich beim zitieren
Antworten