Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C# DLL in Delphi nutzen (https://www.delphipraxis.net/210271-c-dll-delphi-nutzen.html)

Aviator 27. Mär 2022 21:48

AW: C# DLL in Delphi nutzen
 
Delphi-Quellcode:
LoadLibrary()
hat den Vorteil des Lazy Loadings. Wenn die DLL also nicht beim Programmstart direkt zur Verfügung stehe muss, dann kann man die auch erst verzögert laden. Macht den Anwendungsstart ggf. auch etwas schneller.

Und nur weil das Attribut darüber steht heißt das bei C# nicht zwangsläufig, dass die Methode auch exportiert wird. Zumindest ist das meine Erfahrung.

venice2 27. Mär 2022 21:55

AW: C# DLL in Delphi nutzen
 
Zitat:

Und nur weil das Attribut darüber steht heißt das bei C# nicht zwangsläufig, dass die Methode auch exportiert wird. Zumindest ist das meine Erfahrung.
Schlechte Erfahrungen gemacht? Na gut denn.
Meine Erfahrung entspricht deinem Gegenteil. aber muß mich nicht streiten.

hoika 28. Mär 2022 06:09

AW: C# DLL in Delphi nutzen
 
Hallo,
unter c++ wird an den Methodennamen immer was drangehangen,
vielleicht ist es in c# ja auch so.

Fritzew 28. Mär 2022 07:48

AW: C# DLL in Delphi nutzen
 
Du musst die Zielplattform im c# Projekt auf x86 setzten.

Die Declaration von

Delphi-Quellcode:
function ConvertToJson(pBytes: Pbyte; cBytes: Integer): string; stdcall; external 'MsgPack.Native.dll';
mit Rückgabe String wird auch nicht funktionieren.

Versuche es mit PWChar

sh17 28. Mär 2022 09:25

AW: C# DLL in Delphi nutzen
 
Müsste es nicht

ConverToJson := GetProcAddress(dllhandle, 'ConvertToJson');

heißen?

Und evtl WideString anstatt String in der Deklaration der Funktion. Das mit 32bit und 64bit ist immer
etwas schwierig einzustellen in VS finde ich.

Nutzt Du DLLExport 1.7.4.? Al Beispiel mal mein Projekt

https://github.com/landrix/LibPhonenumber-for-Delphi

venice2 28. Mär 2022 11:40

AW: C# DLL in Delphi nutzen
 
Zitat:

Das mit 32bit und 64bit ist immer
etwas schwierig einzustellen in VS finde ich.
Ist doch gut gelöst Debug\Release "COMBO" und dort Konfigurations-Manager starten.

bzgl. x86 und x64 ist so ein Problem.
Was bringt es wenn die Bibliothek RGiesecke.DllExport mit AnyCPU kompiliert wurde das beißt sich doch irgendwie.

Delphi DLL -> C# über DllImport ist kein Problem.
C# DLL über DllExport hingegen schon. (Leider)

bsp.
Code:
namespace CalcTest
{
    using System.Runtime.InteropServices;
    using RGiesecke.DllExport;

    public sealed class CalcTest
    {
        [DllExport(CallingConvention = CallingConvention.StdCall)]
        public static int Sum(int a, int b)
        {
            return a + b;
        }
    }

}
Delphi.
Delphi-Quellcode:
function Sum(a, b: integer): integer; stdcall; external 'Calctest.Net.dll';


Delphi Anwendung stürzt sofort ab.. läßt sich nicht starten!

Fehler!
Der Fehler 0xc000007b tritt typischerweise auf, wenn die 32-Bit-Version von Windows mit einem 64-Bit-Betriebssystem oder -Anwendungen verwechselt wurde.
Projekt ist aber x86 C# DLL ebenso jedoch RGiesecke.DllExport AnyCPU ..

EDIT:
RGiesecke.DllExport neu kompiliert 32Bit\x86 alle Frameworks 4.8 trotzdem selber Fehler.

sh17 28. Mär 2022 12:01

AW: C# DLL in Delphi nutzen
 
Also mit der Lib von Robert Giesecke war irgend wann Ende im Gelände. Bin dann zu DLLExport gewechselt, was grob auf RGiesecke basiert, aber eine Neuentwicklung ist.

venice2 28. Mär 2022 12:12

AW: C# DLL in Delphi nutzen
 
Zitat:

Zitat von sh17 (Beitrag 1504041)
Also mit der Lib von Robert Giesecke war irgend wann Ende im Gelände. Bin dann zu DLLExport gewechselt, was grob auf RGiesecke basiert, aber eine Neuentwicklung ist.

Ahh.. kann natürlich sein.

venice2 28. Mär 2022 13:20

AW: C# DLL in Delphi nutzen
 
Damit funktioniert es nun.
Offline Package von DLLExport im Archiv.

genug damit gespielt.

Wenn er nun das als Beispiel nimmt und sein Projekt entsprechend anpaßt wird es wohl funktionieren.
DLLExport ist nötig.. Die neue (siehe Package) ohne geht es nicht!
Danke an @sh17 für die Info.

Werde die Anhänge später wieder löschen.

Aviator 28. Mär 2022 21:59

AW: C# DLL in Delphi nutzen
 
Zitat:

Zitat von venice2 (Beitrag 1504044)
DLLExport ist nötig.. Die neue (siehe Package) ohne geht es nicht!

Was ich gestern die ganze Zeit gesagt habe. Aber du denkst ja immer direkt das jeder mit dir streiten will ... :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 Uhr.
Seite 2 von 3     12 3      

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