Schaffe es nicht meine C-DLL in Purebasic aufzurufen

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Kaeru Gaman hat geschrieben:klar, die zuweisungen funktionieren...

nur boole'sche ausdrücke leider nicht... ich vermisse sie schrecklich...
Dazu wäre es erforderlich zwischen Vergleich "=" und Zuweisung "=" zu unterscheiden. Wie in Pascal z.B. mit := oder in C mit ==
Ich glaube nicht das dies so umgesetzt wird, aber mit den Macros könnte es gehen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Das Witzige ist, AND und OR scheinen zu gehen:

Code: Alles auswählen

a.l = 0
b.l = 321
Debug a Or b
Debug a And b
Ausserdem hats Fred schon so gut wie eingebaut, er musste nämlich schon
so was in der Art einbauen, damit das a=b<c keine Stackprobleme gibt^^
Er ist einfach zu faul :twisted:

@24dan: Das funktioniert (weiss zwar nicht, ob ich jetzt was zuviel hab^^):

Code: Alles auswählen

extern "C" __declspec( dllexport) int test(int k)
{
	return k;
}
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Code: Alles auswählen

If #False And #False Or #True
  Debug #True
Else
  Debug #False
EndIf

If (#False And #False) Or #True
  Debug #True
Else
  Debug #False
EndIf

If #False And (#False Or #True)
  Debug #True
Else
  Debug #False
EndIf
Ergebnis:
0
1
0
Hierzu gabs schon mal nen Thread ... von wegen Klammern in IF - Anweisungen usw. ...
Daraus ging hervor, das PB das ganze nicht korrekt behandelt bzw da nicht so arbeitet, wie man es erwartet. Daher ist es zwingend notwendig, bei verwendung von ANDs und ORs Klammern zu setzten, auch wenn es eigentlich logischerweise nicht notwendig wäre, PB behandelt es aber anders.

Das Konstanten vor Befehlen nicht funktionieren sollen ist mir neu, aber ich hab davon ja keine ahnung ... gut das ich es eh immer andersrum verwende <) :freak: ...

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ts-soft hat geschrieben:Dazu wäre es erforderlich zwischen Vergleich "=" und Zuweisung "=" zu unterscheiden. Wie in Pascal z.B. mit := oder in C mit ==
Ich glaube nicht das dies so umgesetzt wird, aber mit den Macros könnte es gehen.
eine zuweisung kann in basic ja nicht in klammern stehen.

das ist in C nur der fall, weil dort eben überall eine zuweisung stehen kann...


es müßte doch möglich sein, einen vergleichsoperator innerhalb von klammern als solchen zu erkennen.

es muss meiner auffassung nach lösbar sein,
denn es ging schließlich auf dem alten C64 in seinem stinknormalen Commodore Basic V3.8
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
24dan
Beiträge: 17
Registriert: 28.09.2005 17:46

Beitrag von 24dan »

@remi_meier

Code: Alles auswählen

// dll source code by remi_meier

extern "C" __declspec( dllexport) int test(int k)
{
   return k;
}
Okay wenn ich das richtig verstehe sollte dies der Inhalt meines c-files sein aus dem ich dann eine dll baue???[/code]
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
"Vielleicht ist diese Welt nicht die denkbar beste, aber sie ist die einzig mögliche."
(C. S. Lewis)
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Jo, ich kenn mich mit DLLs unter C++ nicht so aus, ev. wird da noch diese
Prozedur benötigt:

Code: Alles auswählen

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    return TRUE;
}
Antworten