Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#12

Re: VB_NET Parameter zuweisen

  Alt 15. Dez 2009, 03:33
Ok ich hab jetzt eine Managed DLL geschrieben wo man mit VB.NET und C# draufzugreifen kann.
Ist nicht das was ich wollte nur für die API eine zusätzliche DLL zu verwenden aber erst mal egal..

Hab jetzt aber ein Probelm ..
Code:
       
[DllImport("bass_vis.dll", EntryPoint="BASSVIS_Free", CharSet=CharSet.Auto)]
public static extern bool BASSVIS_Free(BASSVIS_PARAM param, BASSVIS_PARAM mbase);
Code:
namespace BassVis_Api
{
    using System;
    using System.Runtime.InteropServices;

    [Serializable, StructLayout(LayoutKind.Sequential)]
    public sealed class BASSVIS_PARAM
    {
        public int VisHandle;
        public IntPtr VisGenWinHandle;
        public BASSVISKind Kind;
        public BASSVIS_PARAM(BASSVISKind kind)
        {
            this.Kind = kind;
            this.VisHandle = 0;
            this.VisGenWinHandle = IntPtr.Zero;
        }

        public BASSVIS_PARAM(BASSVISKind kind, int visHandle)
        {
            this.Kind = kind;
            this.VisHandle = visHandle;
            this.VisGenWinHandle = IntPtr.Zero;
        }
    }
}
Mein Aufruf
Code:
BassVis.BASSVIS_Free(mVisParam, mBase);
Ich übergebe nach dem start des Plugin mBase.Vishandle das Handle von mVisParam.VisHandle
Wenn der Visualisierungthread in BassVis beendet ist setze ich mBase auf 0

So kann man gegenprüfen ob die Plugins entladen und das Handle = 0 ist.

Jetzt meldet mir C# das mBase immer null ergibt
Was muss ich machen bzw.. verlinken damit C# erkennt das ein wert zurückgegeben wird auch wenn er nur 0 ist.

Zitat:
Dem Feld "BassVisExample.Form1.mBase" wird nie etwas zugewiesen, und es hat immer seinen Standardwert von "null".
Ich weise aber mBase doch ein Handle zu wie kann das dann null sein.

Irgenwie aktzeptiert er nicht das ich zwei Parameter des gleichen Typs in einer Funktion habe.
Code:
private BASSVIS_PARAM mVisParam;
private BASSVIS_PARAM mBase;
gruss Emil
  Mit Zitat antworten Zitat