AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein MS .NET Assembly als Win32 PE-Datei compilieren ?
Thema durchsuchen
Ansicht
Themen-Optionen

MS .NET Assembly als Win32 PE-Datei compilieren ?

Ein Thema von stefan2005 · begonnen am 15. Jul 2006 · letzter Beitrag vom 15. Jul 2006
Antwort Antwort
stefan2005

Registriert seit: 30. Sep 2003
Ort: Puchheim
250 Beiträge
 
Delphi 6 Personal
 
#1

MS .NET Assembly als Win32 PE-Datei compilieren ?

  Alt 15. Jul 2006, 14:56
hi,
Microsoft .NET Assemblys, egal ob EXE oder DLL Dateien, werden ja von C#/VB.NET nach MSIL übersetzt und dann in eine spezielle .NET Assembly.
Gibt es Compiler/Tools, mit denen man MSIL-Code (oder auch C#) in echten Win32-Code comilieren kann, so dass dies ohne .NET ausführbar ist und mit bereits vorhandenen Win32-Projekten zusammenarbeiten kann ?

mfg,
stefan
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: MS .NET Assembly als Win32 PE-Datei compilieren ?

  Alt 15. Jul 2006, 14:58
Dafür müsste man erstmal das Framework nachbilden, da ja so Sachen wie generics, Windows Forms etc. nicht einfach 1:1 zu übersetzen sind. Dann wäre es möglich.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
stefan2005

Registriert seit: 30. Sep 2003
Ort: Puchheim
250 Beiträge
 
Delphi 6 Personal
 
#3

Re: MS .NET Assembly als Win32 PE-Datei compilieren ?

  Alt 15. Jul 2006, 15:04
hi,
ok ja stimmt.
Und wenn man das irgendwie mit der Ausführungsschicht von .NET (der Runtime) verbinden könnte.
Die übersetzt ja den MSIL Code in echten Maschinencode, dann könnte man doch das irgendwie im Arbeitsspeicher auslesen ?

mfg,
stefan
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: MS .NET Assembly als Win32 PE-Datei compilieren ?

  Alt 15. Jul 2006, 15:05
Zitat von stefan2005:
hi,
Gibt es Compiler/Tools, mit denen man MSIL-Code (oder auch C#) in echten Win32-Code comilieren kann, so dass dies ohne .NET ausführbar ist und mit bereits vorhandenen Win32-Projekten zusammenarbeiten kann ?
Xenocode Postbuild 2006

Zitat:
Run anywhere: Native x86 executable generation allows your .NET application to run anywhere, with or without the Framework. (Windows 9x and NT4 targets not supported.)
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: MS .NET Assembly als Win32 PE-Datei compilieren ?

  Alt 15. Jul 2006, 15:34
Und wo steckt der Sinn dahinter ?

http://www.mycsharp.de/wbb2/thread.php?postid=68836#post68836
Im Prinzip lautet die Antwort kurz und knapp: NEIN!

Es gibt allerdings mindestens eine kommerzielle Lösung, die es erlaubt, die .NET-Assemblies, die sonst mit der Runtime installiert werden, direkt zur Exe zu packen. So wird zwar nicht auf .NET verzichtet, aber auf die Installation der Runtime. Solche Programmen unterliegen zudem heftigen Restriktionen. Nicht alle Anwendungen sind so zu "verpacken".

Dieses .NET durch die Hintertür führt aber zu entsprechend großen Programmen, so dass man sich das schenken kann und die Runtime gleich mit installieren kann. Das kann mittels Installer vollautomatisch geschehen. Die angesprochene Technik führt dagegegen sehr schnell zu einem höheren Platzverbrauch (Platte) als die Runtime-Version. Vom Nachteil hinsichtlich Download ganz zu schweigen. Da wird aus einer 60 kb-Anwendung ganz schnell ein 6 MB-Monster.

Meine persönliche Meinung: Wer mit der Installation von Runtimes auf PCs (!) Probleme hat, ist im falschen Business oder geistig in den 80er-Jahren stehen geblieben. Oft steht dahinter eine Pseudo-Kritik um das madig zu machen, was man nicht will oder versteht. Gerne geäußert von Programmierern, die mit modernen Entwicklungsplattformen wie .NET oder Java - die allesant runtime-basiert sind - auf Kriegsfuß stehen, und so das Haar in der Suppe gefunden haben um rumzumeckern.


[edit]
Wenn das der Sin(n) sein soll:
Zitat:
[...] und mit bereits vorhandenen Win32-Projekten zusammenarbeiten kann ?
Erstens geht das problemlos auch mit einer stino IL-Assembly und zweitens würde das Übersetzen in Maschinencode nichts verbessern.
[/edit]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
stefan2005

Registriert seit: 30. Sep 2003
Ort: Puchheim
250 Beiträge
 
Delphi 6 Personal
 
#6

Re: MS .NET Assembly als Win32 PE-Datei compilieren ?

  Alt 15. Jul 2006, 19:42
hi,
danke, dieses Programm scheint zwar zu funktionieren, aber ich hab gesehen, dass die Dateigröße von 4 auf 220 KB steigt und es wohl doch nicht eine ganz so gute Möglichkeit ist, in direkten Assemblercode umzuwandeln

mfg,
stefan
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#7

Re: MS .NET Assembly als Win32 PE-Datei compilieren ?

  Alt 15. Jul 2006, 21:16
Warum gehst du nicht einfach den Weg über COM, so wie das für deinen Fall vorgesehen ist?

.Net Lib:
Delphi-Quellcode:
namespace DP.DelphiInterop;

interface
uses
  System.Runtime.*;
  
type
  [ClassInterface(ClassInterfaceType.AutoDual)]
  Sample = public class
  public
    property Miep : String read 'Miep';
  end;
  
implementation
end.
In Delphi als Type lib importiert, und dann noch eine Unit mit type aliases um die ekligen COM Namen zu verstecken:
Delphi-Quellcode:
unit uSample;

interface
uses
  DP_DelphiInterop_TLB;

type
  ISample = _Sample;
  TSample = CoSample;

implementation
end.
So wird's benutzt (CoInitialize muss aber irgendwo in der App aufgerufen werden):
Delphi-Quellcode:
uses
  uSample in 'uSample.pas';

var
  sample : ISample;
begin
  sample := TSample.Create();
  
  Writeln(sample.Miep);
end.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: MS .NET Assembly als Win32 PE-Datei compilieren ?

  Alt 15. Jul 2006, 21:30
Falls das bestehende Win32-Programm ein Delphi-Programm ist würde ich mal Manged VCL anschauen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 06:02 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