C++ DLL Einstiegspunkt Funktionsende



  • Huhu,

    ich mache gerade erste Gehversuche mit C++ DLLs in C#. Nach vielem Lesen und Versuchen hab ich ein kleines Programm zu stande gebracht das die DLL tatsächlich aufruft. Allerdings tat sich gar nichts, beim debuggen ist mir dann aufgefallen das er zwar in die DLL springt aber direkt ans Ende der angegeben Methode und dann natürlich gleich wieder raus. Woran kann das denn liegen ?

    Hier die DLL Header und Cpp in C++:

    #pragma once
    
    #define DLLEXPORT __declspec(dllexport)
    
    extern "C" DLLEXPORT void sendZahl(int i);
    
    #include "stdafx.h"
    #include "DllTest.h"
    
    void sendZahl(int i){
    
    	int a = 5;
    	if(a==5)
    		i = 10;
    
    }
    

    Und der C# Teil (ja der Code ist sinnlos, ich wollts halt nur überhaupt mal hinbekommen)

    Main Klasse:

    static void Main()
    {
        int a = 5;
        try
        {
            Native.sendZahl(a);
        }
        catch (DllNotFoundException)
        {
        }
        catch (AccessViolationException)
        {
        }
    }
    

    Und die 2te Klasse mit dem DLL Import:

    namespace HauptP
    {
        static class Native
        {
            [DllImport("DllTest.dll")]
            public static extern void sendZahl(int a);
        }
    }
    

    Wie gesagt, er wechselt in die DLL aber direkt ans ende der sendZahl Methode. Und ich weiß nicht so recht warum 😞



  • DLL Fragen gehören hier eigentlich nicht hin, da sie ncihts mit der Sprache C++ zu tun haben.
    Vielleicht schriebst du aber mal eine Funktion die auch was macht.
    Wahrscheinlcih wolltest du auch void sendZahl(int& i) schreiben.



  • Achso t'schuldige, dann muss ich spätere Fragen woanders posten, dachte es lag am C++ Code, daher hab ich die Frage hier gestellt.

    Dank meines Freundes Google hab ichs jetzt auch hinbekommen, lag an den Projekteinstellungen, mittlerweile gehts.

    Trotzdem danke für die Hilfe.


Anmelden zum Antworten