![]() |
Re: VB_NET Parameter zuweisen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
und quittiert das mit einen Fehler. Zitat:
Nichts anderes soll die API für VB.NET machen. Zitat:
Ich mache doch nichts anderes als die Exports meiner DLL in eine Classe zu packen damit man von VB.NET auf diese zugreifen kann. Etwas Konfus das ganze für mich. gruss Emil |
Re: VB_NET Parameter zuweisen
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:
Mein Aufruf
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; } } }
Code:
Ich übergebe nach dem start des Plugin mBase.Vishandle das Handle von mVisParam.VisHandle
BassVis.BASSVIS_Free(mVisParam, mBase);
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:
Irgenwie aktzeptiert er nicht das ich zwei Parameter des gleichen Typs in einer Funktion habe.
Code:
gruss Emil
private BASSVIS_PARAM mVisParam;
private BASSVIS_PARAM mBase; |
Re: VB_NET Parameter zuweisen
Erstmal fällt mir auch, dass du eine Klasse deklariert hast (soweit ich den VB Code da oben lesen kann, war's da ein struct)
Dann: Oben hast du ein byref stehen - das musst du in C# auch extra angeben (ref Schlüsselwort). Wobei das hier fast keinen Unterschied macht, da es ja eine Klasse ist. Was mir jetzt so aufgefallen ist :stupid: |
Re: VB_NET Parameter zuweisen
Zitat:
Allerdings nur bei mBase Freigeben
Code:
Neues Handle übergeben
if (mVisParam.VisHandle != 0)
{ BassVis.BASSVIS_Free(mVisParam, ref mBase); mBase = new BASSVIS_PARAM(mVisParam.Kind); mVisParam.VisHandle = mBase.VisHandle; }
Code:
mBase = new BASSVIS_PARAM(mVisParam.Kind, mVisParam.VisHandle);
Danke. gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz