AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi nach C++

Ein Thema von EWeiss · begonnen am 29. Jul 2017 · letzter Beitrag vom 30. Jul 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Delphi nach C++

  Alt 30. Jul 2017, 14:48
Wie aufwendig ist das eine DLL von 32Bit nach 64Bit zu portieren bzw.. zu kompilieren
Was müsste da alles geändert werden.?
Das kommt ganz drauf an, ob überall die korrekten (skalierenden) Typen verwendet wurden. Falls ja, kannst du die DLL ohne Änderungen auch für 64-bit kompilieren. Also im Grunde genau wie bei Delphi.
Ok.. Es geht ja um Delphi also die DLL ist in Delphi geschrieben und ich wollte halt nur wissen wie aufwendig das wäre diese in 64Bit zu kompilieren.
Ob das geht weis ich nicht müsste dafür die Starter für Berlin installieren oder was auch immer 64Bit kompilieren kann.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.241 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi nach C++

  Alt 30. Jul 2017, 14:50
Starter nur 32 Bit.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Delphi nach C++

  Alt 30. Jul 2017, 14:59
Starter nur 32 Bit.
Das ist schlecht.
Hmmm

gruss
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#4

AW: Delphi nach C++

  Alt 30. Jul 2017, 15:20
wenn du die gesamte DLL nach C++ bekommst, dann ist es mit VSxxxx nur ein sehr geringer Aufwand das auf 64Bit zu bekommen.

Der von mir hier absichtlich als Trail vorgeschlagene Delphi zu Cpp Converter kann auch in seit heute auch zum Test verfügbarer aktueller Version1.7 nur die PascalSyntax bis Delphi7.
Das kann & macht er aber wirklich SHER GUT! Der Entwickler hat mit heute mitgeteilt, das er keine weiteren Updates dazu macht, sondern nächstes Jahr einen Converter liefert, der aus aktuellen Delphi-Sourcen dann echtes CPP11 macht (es gab aber gleich den Hinweis, das dies dann auch deutlich teurer wird)

Es ist immer eine Frage des Aufwandes... sobald ab D2007 "record's" mit Propertys, Operatoren oder Funktionen/Methoden ins Spiel kommen streikt der aktuelle Converter etwas, aber man kann es noch per Hand ohne viel Aufwand in C++ umsetzen. Wenn dann ab XE? die Generics noch dazu kommen wird es aktuell ganz kompliziert... da lohnt dann das Warten oder man hat viel Zeit und die C++ Skills für eine eigene manuelle Line per Line Umsetzung.

32->64 Bit sehe ich sobald die DLL in C++ egal ob VisualStudio oder C++Builder(Pro+) als die kleinere Herausforderung.

Geändert von mensch72 (30. Jul 2017 um 15:23 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Delphi nach C++

  Alt 30. Jul 2017, 15:49
Zitat:
wenn du die gesamte DLL nach C++ bekommst, dann ist es mit VSxxxx nur ein sehr geringer Aufwand das auf 64Bit zu bekommen.
Ich glaube das ist nicht nötig die DLL in Delphi sollte auch unter VS2017 funktionieren.

Voraussetzung dafür wäre wenn ich eine *.def erstelle und daraus ein Library bilde.
Der Header wird aber trotzdem benötigt.
Habe das mal mit meiner Bass_Vis DLL gemacht.

Die läuft auch unter VS ohne Probleme.
Muss mal schauen in wie weit sich der ganze Aufwand lohnt.
Danke!

Bsp.
Code:
Microsoft (R) COFF Binary File Dumper Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.


Dump of file KVideoPlayer.dll

File Type: DLL

  Section contains the following exports for KVideoPlayer.dll

           0 characteristics
           0 time date stamp Thu Jan 01 01:00:00 1970
        0.00 version
           1 ordinal base
          45 number of functions
          45 number of names

    ordinal hint RVA     name

         37    0 000E9FB0 KVideo_CloseFile
          5    1 000EA538 KVideo_CreateOverlayBaseImage
         13    2 000EA394 KVideo_DisplayModeChanged
          1    3 000EA6E0 KVideo_GetCapturedImage
         42    4 000E9DBC KVideo_GetLastError
         27    5 000EA0D8 KVideo_GetMediaInfoText
         18    6 000EA234 KVideo_GetMediaProperty
          9    7 000EA424 KVideo_GetPlayerState
         22    8 000E9FE0 KVideo_GetStreamInfo
         32    9 000E9FE0 KVideo_GetStreamInfo
          8    A 000EA43C KVideo_GetStreamPosition
         45    B 000E9D10 KVideo_GetVersion
         17    C 000EA2FC KVideo_GetViewSize
         40    D 000E9E48 KVideo_GetWorkingVR
         24    E 000EA174 KVideo_GetXySubFilter
          4    F 000EA59C KVideo_HasOverlayImage
         44   10 000E9D3C KVideo_Initialize
         16   11 000EA32C KVideo_KeepAspectRatio
         29   12 000EA0A0 KVideo_MediaInfoServiceReady
         38   13 000E9EAC KVideo_OpenFile
         35   14 000E9F0C KVideo_OpenFile2
         36   15 000E9F0C KVideo_OpenFile2
         11   16 000EA3DC KVideo_Pause
         12   17 000EA3B8 KVideo_Play
          3   18 000EA5C0 KVideo_PutOverlayImage
         43   19 000E9D80 KVideo_Release
         14   1A 000EA370 KVideo_Repaint
         15   1B 000EA34C KVideo_Resize
         30   1C 000EA074 KVideo_SelectAudioStream
         20   1D 000EA074 KVideo_SelectAudioStream
         31   1E 000EA048 KVideo_SelectVideoStream
         21   1F 000EA048 KVideo_SelectVideoStream
         39   20 000E9E54 KVideo_SetLAVFiltersFolder
         33   21 000E9F90 KVideo_SetPlaybackRate
         34   22 000E9F70 KVideo_SetSearchMode
         23   23 000E9F70 KVideo_SetSearchMode
          7   24 000EA490 KVideo_SetStreamPosition
         41   25 000E9E28 KVideo_SetVideoRenderer
          6   26 000EA504 KVideo_SetVolume
         19   27 000EA0B8 KVideo_ShowMediaInfo
         28   28 000EA0B8 KVideo_ShowMediaInfo
         25   29 000EA1E8 KVideo_ShowXySubFilterPropertyPage
         10   2A 000EA400 KVideo_Stop
          2   2B 000EA658 KVideo_UpdateOverlayImage
         26   2C 000EA144 KVideo_XySubFilterState

  Summary

        F000 .rsrc
       DE000 UPX0
       5A000 UPX1
gruss
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: Delphi nach C++

  Alt 30. Jul 2017, 16:23
Zitat:
wenn du die gesamte DLL nach C++ bekommst, dann ist es mit VSxxxx nur ein sehr geringer Aufwand das auf 64Bit zu bekommen.
Ich glaube das ist nicht nötig die DLL in Delphi sollte auch unter VS2017 funktionieren.
Selbstverständlich funktioniert die Verwendung der DLL auch mit VS2017. Wenn dir kein Delphi mit 64-Bit Compiler zur Verfügung steht, wäre die vollständige Konvertierung nach C/C++ halt eine alternative Möglichkeit dein 64-Bit Kompilat zu erhalten. Hast du ein Delphi mit 64-Bit Compiler, dann lohnt sich der Aufwand natürlich nicht.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (30. Jul 2017 um 16:26 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Delphi nach C++

  Alt 30. Jul 2017, 16:38
Zitat:
wenn du die gesamte DLL nach C++ bekommst, dann ist es mit VSxxxx nur ein sehr geringer Aufwand das auf 64Bit zu bekommen.
Ich glaube das ist nicht nötig die DLL in Delphi sollte auch unter VS2017 funktionieren.
Selbstverständlich funktioniert die Verwendung der DLL auch mit VS2017. Wenn dir kein Delphi mit 64-Bit Compiler zur Verfügung steht, wäre die vollständige Konvertierung nach C/C++ halt eine alternative Möglichkeit dein 64-Bit Kompilat zu erhalten. Hast du ein Delphi mit 64-Bit Compiler, dann lohnt sich der Aufwand natürlich nicht.
Jo Danke.
Bin gerade die Bytes am zusammenzählen für die Definitions Datei.
bsp.

Delphi-Quellcode:
function KVideo_GetVersion: longint; stdcall;
KVideo_GetVersion name 'KVideo_GetVersion@4', //4Bytes LongInt
Delphi-Quellcode:
function KVideo_GetLastError: pWideChar; stdcall;
KVideo_GetLastError name 'KVideo_GetLastError@2', // WideChar 2Bytes (Pointer noch extra addieren?) Pointer 4Bytes summe gesamt 6? oder reicht nur der Pointer bzw. nur WideChar
Weis jemand wie ich diese bei Types zusammen rechne?

Delphi-Quellcode:
function KVideo_Initialize(MediaWindow: HWND; EventNoticeFunc: CBEventNotice): BOOL; stdcall; //HWND = LongWord 4Bytes, Bool = LongBool 4Bytes, CBEventNotice ?????
TPlayerEvent = (PlayEnded, ErrorEnded);
CBEventNotice = procedure(Event: TPlayerEvent); stdcall;
KVideo_Initialize name 'KVideo_Initialize'@ ?????,
Oder gibt es ein Tool das dass für mich macht? LOL..

EDIT:
Ich hoffe das stimmt so weit

Delphi-Quellcode:
function KVideo_Initialize(MediaWindow: HWND; EventNoticeFunc: CBEventNotice): BOOL; stdcall; //HWND = LongWord 4Bytes, Bool = LongBool 4Bytes, CBEventNotice ?????
TPlayerEvent = (PlayEnded, ErrorEnded);
CBEventNotice = procedure(Event: TPlayerEvent); stdcall;
KVideo_Initialize name 'KVideo_Initialize'@ ?????,
HWND = LongWord 4Bytes
Bool = LongBool 4Bytes
CBEventNotice = 4Bytes Pointer auf die procedure

summe = 12
KVideo_Initialize name 'KVideo_Initialize@12', Ob ich das enum TPlayerEvent noch addieren muss weis ich leider nicht wäre dann + 1

gruss

Geändert von EWeiss (30. Jul 2017 um 18:13 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz