Entwickler-Ecke
Basistechnologien - DLLIMPORT bcb dll mit AnsiString und Currency
NAP - Do 18.11.10 16:57
Titel: DLLIMPORT bcb dll mit AnsiString und Currency
Hallo,
ich muss ein paar Routinen aus einer alten in borland cpp builder geschriebenen dll in meinem c# Projekt verwenden.
Die alte dll lässt sich NICHT ändern.
folgende Funktion wird z.B. exportiert
Quelltext
1:
| extern "C"__declspec(dllexport) __stdcall AnsiString Calc01 (Currency PR, AnsiString AT, int TA) |
Mir fällt echt nix ein, wie ich die Routine über ein DLLIMPORT einbinden könnte
Quelltext
1: 2:
| [DllImport("gebrah.dll", CharSet = CharSet.Ansi)] static extern string Calc01(float PR, string AT, Int32 TA); |
geht natürlich nicht. Denn float entspricht nicht Currency - aber was tut das?
Und string scheinbar auch nicht einem AnsiString insb. als Rückgabewert.
Hat irgendjemand einen Tipp?
Bin für jede Hilfe dankbar.
Mirko
Th69 - Do 18.11.10 19:26
Direkt wirst du das nicht so einfach hinkriegen, da du ja die Datentypen 'Currency' und 'AnsiString' in C# exakt nachbauen müßtest (Marshalling von Strukturen). Besser und einfacher wäre es, eine einfache C-DLL zu erstellen (bzw. falls du den Sourcecode der DLL hast, zusätzliche Funktionen zu erzeugen), welche nur POD-Datentypen verwenden (d.h. int, const char* etc.).
NAP - Fr 19.11.10 09:16
Ich hatte das befürchtet, aber gehofft, dass doch jemand ne andere Lösung hat ;-)
Greenberet - Fr 19.11.10 11:53
Andere Möglichkeiten wird es kaum geben( außer Pseudoparametern, aber das wird dir nicht viel helfen )
Hast du die Definitionen von Currency und AnsiString aus der DLL?
Meine Vermutung:
Currency = enum = int
AnsiString = char*
Wenn du die Definiton hast wäre es fast C&P in C#
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!