Laden...

Wie übergebe ich den Datentyp "decimal" and eine c++ dll ?

Letzter Beitrag vor einem Jahr 7 Posts 936 Views
Wie übergebe ich den Datentyp "decimal" and eine c++ dll ?

Hallo,

ich habe eine c++ dll in meinen c# code eingebunden:

using System.Runtime.InteropServices;
   class Hello
   {
       static void Main(string[] args)
       {
       [DllImport("CPPTestDLL.dll", CallingConvention = CallingConvention.Cdecl)]
       static extern int subtract(int a, int b);

       int x = 10;
       int y = 5;
       int z = subtract(x, y);
       System.Console.WriteLine($"{z}");

       }
   }
#include < stdio.h >
#include <pch.h>
extern "C" 
{
   __declspec(dllexport) int add(int a, int b) {
       return a + b;
   }
   __declspec(dllexport) int subtract(int a, int b) {
       return a - b;
   }
}

Wenn nun gilt:

decimal x = 10;
decimal y = 5;
decimal z = subtract(x, y);

Welchen Datentyp müsste ich in c++ wählen bzw. wie könnte man das lösen ?

Falls es sich beim C# code um eine dll handelt, gibt es eine Möglichkeit beide zu mergen, so dass ich letztlich nur eine dll habe ?

besten Dank für ein paar Tipps.

C++ hat keinen direkten Pendant für decimal.
Das hättest du auch kur bei googel suchen können.

Link:
https://stackoverflow.com/questions/64565151/whats-the-c-equivalent-of-cs-decimal-type

Ansonsten verstehe ich auch den zweiten Teil nicht.
Was willst du wie/wohin mergen?
Klint im Kern wieder nach der gleichen Frage aus deinem anderen Thread, den Abt dir schon beantwortet hat.

Link:
https://mycsharp.de/forum/threads/125490/ist-virtualisierung-ein-guter-schutz-fuer-csharp-code?page=1#forumpost-3840453

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

Im Prinzip kann man sich alles ergoogeln und anlesen, dann erübrigt sich auch dieses Forum hier.

Mit mergen meinte ich, ob mann aus der cpp.dll und der c#.dll eine datei machen kann, aber auch das habe ich mir gegoogelt:

https://www.codeproject.com/Messages/1424822/Using-ILMerge-to-embedd-Cplusplus-DLL-into-Csharp.aspx

Ihr seid wirklich ein hilfbereiter Haufen hier, selten solch charmante Menschen erlebt.

Wenn man sich Jahrzente lang mit ein und demselben Thema befasst, kennt man sich natürlich auch sehr gut damit aus, das liegt in der Natur der Sache und ist keine besondere Begabung (auch wenn sich das gewisse Oberschlaumeier einbilden). Allerdings ist es eine besondere Begabung sich mal in andere Menschen zu versetzten, die vielleicht nicht diesselbe Erfahrung und Screentime haben.

Wenn du gefühlt 5 Themen auf machst, die im Grunde immer die gleichen Fragen stellen und du sämtliche Links und Hinweise ignorierst, dann kann man dir auch nicht mehr helfen.

Das Forum ist auch nicht dazu da dir als persönlicher Lehrer zur Seite zu stehen.
Die meisten hier haben sich diese Erfahrung durch Jahre langes einarebiten mit lesen, Videos schauen und probieren beigebracht.
Wenn man diese Ansätze aber links liegen lässt und imer wieder von anderen Lösungen erwartet ohne selbst was zu machen/lernen, braucht man sich nicht wudern wenn man die gleichen Antworten und Hinweise bekommt.

Anbei kannst du dir auch gerne einen anderen Spielplatz suchen.
Es gibt bestimmt genug Leute, die ihre freie Zeit damit verschwenden wollen, unwilligen die gleichen Antworten und Hinweise auf die gleichen Fragen zu geben.
Ich habe jeden Falls keinen Lust darauf, die deine nächsten 5 Fragen zum Thema Mergen von DLLs zu beantworten.
Link zur Doku. findest du ebenfalls bei google 😉

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

Zitat von T-Virus

Die meisten hier haben sich diese Erfahrung durch Jahre langes einarebiten mit lesen, Videos schauen und probieren beigebracht.

Sag ich ja, wer sich Jahre lang mit einem Thema befasst, der kennt sich gut aus, nix worauf man sich etwas einbilden müsste.

Nimm dein Wissen mit ins Grab.

Hallo cprogrammer,

der Sinn eines Forums ist es bestimmt nicht leicht zugängliche, leicht findbare Dokumentation zu ersetzen.
Hättest du nur ein wenig die Grundlagen von C# und .NET erlernt, und dabei sprechen wir nicht von Jahren, sondern Stunden, Tage, etc. so erübrigen sich diese Fragen.

Bedenke auch dass hier im Forum alle freiwillig dabei sind. Daher ist es fast schon ein wenig unverschämt die Last etwas zu recherchieren auf die Community umzuwälzen.
Dein Umgangston bzgl. T-Virus finde ich hier nicht OK, denn immerhin hat er sich die Mühe gemacht und für dich ein paar Links rausgesucht.

Alleine die Frage "nach dem mergen von C# und C++ DLL" zeigt, dass das Konzept von .NET mit der managed Runtime noch nicht angekommen ist. Das wird übrigens in der .NET Doku recht am Anfang schon erörtert...

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

Zitat von cprogrammer

Im Prinzip kann man sich alles ergoogeln und anlesen, dann erübrigt sich auch dieses Forum hier.

Diese Aussage zeigt, dass Du wirklich nicht im Ansatz verstanden hast, was die Idee eines Forums ist:
Ein Forum ist eine Anlaufstelle für konkrete, technische Probleme, die über Grundlagen hinaus gehen. Probleme, die Du aus den Docs oder durch ChatGPT nicht innerhalb von Sekunden selbst lösen kannst. Macht ja kein Sinn ein Thema zu erstellen, das länger benötigt als ChatGPT zu fragen.
Es sind vor allem Use Case Probleme, wo Dir eine Doc oder eine AI nicht (wirklich) helfen kann.

Du hast die letzte Zeit vor allem Grundlagenthemen, die Du alle viel schneller und effizienter lösen hättest können, wenn Du die Grundlagen erlernt hättest.
Wir konkurieren auch nicht als Forum gegen eine Suchmaschine. Ein Forum, eine Suchmaschine und mittlerweile die AI ergänzen sich.

Und die Aussage

Ihr seid wirklich ein hilfbereiter Haufen hier, selten solch charmante Menschen erlebt.

zeigt, dass Du wirklich null anerkennst, dass Leute in ihrer Freizeit anderen Menschen helfen. Sie helfen selbst Dir, der bislang null Eigeniniative gezeigt hat und weiterhin trotz der Erfahrung und Hinweisen von Helfern denkt, dass man mit dem Kopf-Durch-Die-Wand-Prinzip in der Software-Entwicklung weit kommen würde.
Das ist nicht nur respektlos, das ist super erbärmlich.

Wir wollen Dir wirklich nicht im Weg stehen. Wir helfen Dir freiwillig - und Du musst die Antworten nicht mal akzeptieren. Das ist alles ohne Verpflichtung hier.
Du kannst sogar einfach an anderer Stelle Hilfe suchen, wenn Dir das hier nicht gefällt. Vielleich hast Du da mit Deiner Art mehr Glück und/oder Erfolg. Es geht hier niemanden darum, wie viel Du weißt - wir haben alle bei 0 begonnen. Es geht darum wie man sich verhält. Du bist der einzige, der immer wieder mit irgendwelchen Wissensstandsvergleichen versucht zu argumentieren.

Ich im persönlichen hab schon viele Leute gesehen, die dachten, dass ein Vorgehen, wie Du es zeigst, von Erfolg gekrönt ist. Ausnahmslos alle sind gescheitert. Ich sag Dir das nicht, um Dich zu ärgern - genausowenig sind meine anderen Antworten so gedacht - aber vielleicht kommst Du doch irgendwann auf den Trichtern und merkst, dass man mit einer anderen Art und einem anderen Vorgehensmodell mit Software erfolgreicher ist.