DllImport Zeiger als paramweter



  • Hallo! Kann mir einer helfen bei DllImport?

    Ich Möchte eine Funktion Importieren, die ein Array(Zeiger) als parameter erwartet:

    void glGetDoublev(int pname,double *params )
    

    versuche ich so zu importieren:

    [DllImport("OpenGL32.dll", EntryPoint = "glGetDoublev")]
    public static extern void GetDoublev(uint pname, ref IntPtr ptr);
    

    Nun möchte ich das die Funktion das Array modelview füllt:

    double[] modelview = new double[16];
    GetDoublev(GL_MODELVIEW_MATRIX,ref modelview );
    

    Entweder importiere ich die Funktion falsch, oder ich rufe sie falsch auf, oder beides.
    Wie kann ich modelview füllen?



  • Hier ein Bsp.

    extern "C"
    {
        __declspec(dllexport) void fill(double* buffer, int length)
        {
            for (int i = 0; i < length; ++i)
            {
                buffer[i] = i;
            }
        }
    }
    
    using System;
    using System.Runtime.InteropServices;
    
    namespace App
    {
    	class Program
    	{
    		[DllImport(@"..\..\..\Debug\Lib.dll")]
    		static extern void fill(double[] buffer, int length);
    
    		static void Main(string[] args)
    		{
    			double[] buffer = new double[16];
    			fill(buffer, buffer.Length);
    		}
    	}
    }
    


  • Dankeschön!


Log in to reply