Seite 1 von 2

IDE-Tools - Keinerlei Funktiontion

Verfasst: 25.09.2017 15:51
von GPI
Ich versuche gerade ein selbstgeschriebenes Programm in Tools-Menü unterzubringen. Wenn ich es in Finder starte, wird es geöffnet. Wenn ich in Tool-Menü es eintrage passiert überhaupt nichts. Keine Fehlermeldung kein irgendwas. Egal welchen Trigger (Menüeintrag, vor den Compilen oder sonstwo eintrage.

Re: IDE-Tools - Keinerlei Funktiontion

Verfasst: 25.09.2017 17:42
von mk-soft
Ist ein bischen blöd bei MacOS. Must den Path zur APP manuell anpassen

Etwa so:
Path "... /Applications/MyApp.app/contents/MacOS/MyApp"

Wie bei diesen tool
http://www.purebasic.fr/english/viewtop ... =myappdata

Re: IDE-Tools - Keinerlei Funktiontion

Verfasst: 25.09.2017 19:10
von GPI
Danke das hilft.

Dafür hab ich gerade gelernt, das dylib in der Datasection kein @Procedure() haben dürfen. Der Linker steigt hier aus....
Blöd, das mein PreCompiler das als Basis für alles hat....

Und blöd auch, dass das MAC-IDE die Windows-IDE einstellungen nimmt und damit natürlich nicht klar kommt.

Und blöde groß/kleinschreibung
und blödes mac-tastaturlayout

alles blöd

<schulterzuck> naja, ich schreib mal weiter...

Re: IDE-Tools - Keinerlei Funktiontion

Verfasst: 25.09.2017 20:07
von mk-soft
Ist noch ein Bug in Purebasic.
Es geht keine DyLib zu erstellen...

Re: IDE-Tools - Keinerlei Funktiontion

Verfasst: 25.09.2017 20:29
von GPI
Also DyLib kann ich problemlos erstellen. Funktionieren auch so wie erwartet. Auch der Code außerhalb der Proceduren wird eingesammelt und beim laden der dylib automatisch ausgeführt.
das einzige, was nicht geht, ist eine DATASECTION mit einen @Procedure() - das gibt einen Linkerfehler.
aus bspw.

Code: Alles auswählen

ProcedureDLL __Get_vt_New()
    ProcedureReturn ?vt_new
    DataSection
      vt_new:
      Data.i @ObjectNew(),@ObjectNew(),@ClassFree(),@ClassCopy(),@ClassIsClass(),@ClassIsAccessable()
    EndDataSection
  EndProcedure
muss man bspw. sowas machen

Code: Alles auswählen

  Structure __Get_vt_New 
    *new1
    *new2
    *free
    *copy
    *isClass
    *isAccessable
  EndStructure
  ProcedureDLL __Get_vt_New()
    Static vt.__Get_vt_New
    If vt\new1=0
      With vt
        \new1=@ObjectNew()
        \new2=@ObjectNew()
        \free=@ClassFree()
        \copy=@ClassCopy()
        \isClass=@ClassIsClass()
        \isAccessable=@ClassIsAccessable()
      EndWith
    EndIf
    ProcedureReturn vt
  EndProcedure   
Ob die dylib lauffähig ist, muss ich noch testen. Generell ob das alles, was ich in Windows so gemacht hab, jetzt noch geht :)

Und rate mal, was mir gerade passiert ist, als ich ein @ machen wollte....

Re: IDE-Tools - Keinerlei Funktiontion

Verfasst: 25.09.2017 20:46
von mk-soft
Bei mir habe ich das Problem gefunden.
Purebasic mag keine Leerzeichen im Ordner 8)

Leg mal deine DataSection ausserhalb der Procedure.

Das hier funktioniert. Hatte ich zum testen mal schnell geschrieben.

Code: Alles auswählen

;-TOP

Procedure fcA()
  ProcedureReturn 1  
EndProcedure

Procedure fcB()
  ProcedureReturn 2  
EndProcedure

ProcedureDLL fcList()
  ProcedureReturn ?MyFC
EndProcedure

DataSection
  MyFC:
  Data.i @fcA()
  Data.i @fcB()
EndDataSection
Test

Code: Alles auswählen

Prototype protoInvoke()

Structure udtfcList
  fcA.protoInvoke
  fcB.protoInvoke
EndStructure

If OpenLibrary(0, "MyLib.dylib")
  
  *fcList.udtfcList = CallFunction(0, "fcList") 
  Debug *fcList\fcA()
  Debug *fcList\fcB()
Else
  Debug "Fehler DyLib"
EndIf

Re: IDE-Tools - Keinerlei Funktiontion

Verfasst: 25.09.2017 20:50
von mk-soft
Und rate mal, was mir gerade passiert ist, als ich ein @ machen wollte....
:mrgreen: Quit

Habe jetzt eher das Problem das ich das '@' bei windows nicht immer sofort finde...

Alt == AltGr

@ = Alt+L
\ = Alt+Shift+7
| = Alt+7
[ = Alt+5
] = Alt+6
~ = Alt+n

P.S.
Muss mich getäuscht haben. So geht es nur. Muss ein Bug sein.

Code: Alles auswählen

;-TOP

Procedure fcA()
  ProcedureReturn 1  
EndProcedure

Procedure fcB()
  ProcedureReturn 2  
EndProcedure

ProcedureDLL fcList()
  Static Dim fc(1)
  fc(0) = @fcA()
  fc(1) = @fcB()
  ProcedureReturn fc()
EndProcedure


Re: IDE-Tools - Keinerlei Funktiontion

Verfasst: 25.09.2017 22:04
von GPI
edit:
hmm... jetzt wirds interessant. Die mein dylib wird erstellt, ist aber leider ungültig :(
beim laden schmierts ab....

Re: IDE-Tools - Keinerlei Funktiontion

Verfasst: 25.09.2017 22:34
von mk-soft
Code immer in Prozeduren kapseln...

Re: IDE-Tools - Keinerlei Funktiontion

Verfasst: 25.09.2017 22:44
von GPI
das war nicht das Problem, sondern das ich einmal .integer statt \i geschrieben hab....

Jetzt bleibt mir ein Problem: Wo sucht standardmäßig macos nach einer dylib.... Mit fixen pfad klappt das wunderbar. aber dann darf die sich nicht verschieben. Morgen nochmal anschauen :) Unter Windows ist das ganze Thema so viel leichter...