AGB  ·  Datenschutz  ·  Impressum  







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

Fehler bei .net dll

Ein Thema von Speedmaster · begonnen am 20. Apr 2005 · letzter Beitrag vom 20. Apr 2005
Antwort Antwort
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#1

Fehler bei .net dll

  Alt 20. Apr 2005, 18:22
Folgenden Fehler bekam ich beim Testen eine DLL zu erstellen:
[Fehler] Library1.dpr(80): E2395 Unsichere Prozedur nur beim Compilieren mit {$UNSAFECODE ON} zulässig

Der Code ist nicht viel:
Delphi-Quellcode:
library Library1;


uses
  SysUtils,
  Classes,
  System.Reflection,
  System.Runtime.InteropServices;

[assembly: AssemblyTitle('')]
[assembly: AssemblyDescription('')]
[assembly: AssemblyConfiguration('')]
[assembly: AssemblyCompany('')]
[assembly: AssemblyProduct('')]
[assembly: AssemblyCopyright('')]
[assembly: AssemblyTrademark('')]
[assembly: AssemblyCulture('')]
[assembly: AssemblyVersion('1.0.*')]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile('')]
[assembly: AssemblyKeyName('')]
[assembly: ComVisible(False)]


function Malnehmen(Zahl1, Zahl2: integer):int64;
begin
  Result := Zahl1 * Zahl2;
end;


exports
  Malnehmen;


begin
end.
// Kommentare wurden gelöscht!

Edit: Wie ist das eigentlich, kann man die Lib auch in Linux benutzen?

Edit2: Habe stdcall; hinter die Funktion nun gibts den Fehler:
[Fehler] Library1.dpr(74): E2297 Die Prozedurendefinition muss die ILCODE-Aufrufkonvention sein
Felix K.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Fehler bei .net dll

  Alt 20. Apr 2005, 18:47
Borland rät davon ab eine "Library" für .NET zu erstellen. Man soll besser ein Package nehmen, da es dabei nicht zu Konflikten mit den System, SysUtils, ... Units kommt.

Im Hauptmodul sollte bei .NET nicht wirklich eigener Code stehen, da der dort enthaltene Code von anderen Assemblies nicht ganz so einfach angesprochen werden kann.

Das "exports" weißt den Delphi-Compiler an, einen Win32 DLL Einsprungpunkt für die Funktion zu generieren, was dann als unsicherer Code reklamiert wird. Wenn du die Funktion in einem anderen Assembly aufrufen willst, solltest du die Funktion in eine Unit mit passendem Namespace (Name) stecken. .NET Assemblies brauchen kein exports.

Zitat:
Wie ist das eigentlich, kann man die Lib auch in Linux benutzen?
Wenn du die Funktion in eine eigene Unit steckst (z.B. MeinName.Math.MeineUnit.pas) dann sollte das ganze auch unter Linux mit Mono / gnuDot funktionieren.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#3

Re: Fehler bei .net dll

  Alt 20. Apr 2005, 18:54
Du versuchst dort etwas wofür .Net einfach nicht gemacht wurde.
  1. ) liegt da nur eine lose Funktion rum
  2. ) versuchst du diese wie bei einer alten DLL zu exportieren

Wie jbg schon sagte, musst du das ganze als unsafe deklarieren. CAS würde dabei ja eh keinen Sinn machen.

Du musst aber bedenken, dass dir wohl der Marshaler die Cyclen wegfrisst. Denn das da würde ja mehr Marshaling Kosten als eigentlich Rechenkosten bedeuten.

p.s.: Ehrlich gesagt finde ich das ziemlich pervers, aber das dürftest du schon noch selbst mitkriegen.
  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 19:50 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