Seite 1 von 2

Fehler: CALL _SendMessageA@16 (Linux)

Verfasst: 11.04.2005 10:55
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

Verfasst: 11.04.2005 11:04
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

Verfasst: 11.04.2005 11:19
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

Verfasst: 11.04.2005 11:51
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...

Verfasst: 11.04.2005 15:13
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

Verfasst: 11.04.2005 15:19
von DrShrek
Dieses <...>@<nr> nennt sich 'Name mangeling'
Rest ist Google-Sache

Verfasst: 11.04.2005 15:23
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.

Verfasst: 11.04.2005 18:48
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

Verfasst: 11.04.2005 19:48
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 .

Verfasst: 12.04.2005 09:02
von Rings

Code: Alles auswählen

Including source: sqlite3.pbi
sqlite unter Linux ?????