AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Von Delphi Win32 auf .NET Assemblies zugreifen?

Von Delphi Win32 auf .NET Assemblies zugreifen?

Offene Frage von "Elvis"
Ein Thema von sh17 · begonnen am 8. Jul 2009 · letzter Beitrag vom 6. Mär 2011
Antwort Antwort
melv

Registriert seit: 2. Feb 2010
1 Beiträge
 
#1

Re: Von Delphi Win32 auf .NET Assemblies zugreifen?

  Alt 2. Feb 2010, 22:42
Hi Elvis,
also ich habe deinen Code in mein Projekt eingebaut. Das mit dem Import des MSBuild Target Skripts hat leider nicht so funktioniert, aber ich habe die Aufrufe einfach direkt in das Projekt Build Skript gepackt. Dann hat er nach dem erstellen des Assemblies als DLL einmal ILDasm aufgerufen und anschließend ILAsm, das hat auch alles super geklappt, aber ich kann die DLL aus Delphi (es ist Delphi 5) nicht einbinden.

Ich versuche Sie statisch einzubinden, so wie du es in deinem Tut. gezeigt hast, aber das Programm stürzt ab mit der Meldung: Die Anwendung konnte nicht richtig initialisiert werden.

Dann hab ich mir die DLL mal mit einem dependecy Viewer angeschaut und ich finde dort gar keine exportierten Funktionsnamen.


Ich kenn mich mit .Net nicht aus, aber ich vermute die erzeugte DLL ist irgendwie nicht ganz i.O.


Ich habe das Ausgabeformat auf x86 gestellt und als .Net Framework benutze ich 3.5

Was funktioniert hat, war der Trick mit den Com Objekten. Allerdings gefällt mir diese Lösung nicht so gut ...


Hast du vielleicht eine Idee dazu?

Der C# Code sieht so aus:
using System.Runtime.InteropServices;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RGiesecke.DllExport;


namespace HeartsKI
{
public class HeartsKI {
[DllExport("getInt", CallingConvention = CallingConvention.StdCall)]
public static int getInt() {
return 6000;
}
}
}

Beim kompilieren und ausführen deines Build Targets erscheinen folgende Meldungen:
HeartsKI -> C:\Users\jantz\Documents\Visual Studio 2008\Projects\HeartsKI\HeartsKI\bin\Debug\HeartsKI .dll
ILDasm: calling 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\ildasm.exe' with /quoteallnames /nobar /linenum "/out:C:\Users\jantz\AppData\Local\Temp\tmpD93A\Hear tsKI.il" "C:\Users\jantz\Documents\Visual Studio 2008\Projects\HeartsKI\HeartsKI\bin\Debug\HeartsKI .dll"
ILAsm: calling 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\ILA sm.exe' with /nologo "/out:C:\Users\jantz\Documents\Visual Studio 2008\Projects\HeartsKI\HeartsKI\bin\Debug\HeartsKI .dll" "C:\Users\jantz\AppData\Local\Temp\tmpD93A\HeartsK I.il" /DLL "/resource=C:\Users\jantz\AppData\Local\Temp\tmpD93A \HeartsKI.res" /debug

im Delphi Code ist das ganze dann so deklariert:


function getInt():Integer; stdcall; external 'HeartsKI.dll';

Ich habe die compilierte DLL mal angehangen.
Angehängte Dateien
Dateityp: dll heartski_248.dll (5,5 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Elvis

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

AW: Re: Von Delphi Win32 auf .NET Assemblies zugreifen?

  Alt 6. Mär 2011, 22:01
Hi Elvis,
also ich habe deinen Code in mein Projekt eingebaut. Das mit dem Import des MSBuild Target Skripts hat leider nicht so funktioniert
Habe deinen Beitrag eben erst gesehen.
Für den unwahrscheinlichen Fall, dass es noch relevant für dich ist, oder falls andere hier auf das gleiche Thema stoßen:
Ich hatte schon vor längerem das ganze auf eine kleine Google Site gepackt und weiß von vielen Leuten, die die dortige Version erfolgreich und problemlos für alles mögliche einsetzen.
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
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz