nicht laden MediaInfo-Bibliothek

Bin mit Mediainfo-Bibliothek in meinem C# - Projekt,bevor Sie beginnen Aufruf dieser dll,ich lief nur VC++ - Programm, das kommt mit dem Paket und Bereitstellung in zu meinem lokalen system.bin nicht sicher, was genau damals, als es nutzt,es registrieren etwas im system,also mein Prozess identifizieren können mediainfo.dll also es funktionierte gut in meinem lokalen (32bit).

Wenn ich starten Sie die Bereitstellung im Testserver,ich kann nicht laufen oder stellen Sie die VC++(bcoz test-server nicht über visual studio zu tun,außer, debugger).so bin immer diesen Fehler

 public class MediaInfo
{
    //Import of DLL functions. DO NOT USE until you know what you do (MediaInfo DLL do NOT use CoTaskMemAlloc to allocate memory)  

    [DllImport("MediaInfo.dll")]
    private static extern IntPtr MediaInfo_New();


    //MediaInfo class

    public String Inform()
    {
        if (Handle == (IntPtr)0)
            return "Unable to load MediaInfo library";
        if (MustUseAnsi)
            return Marshal.PtrToStringAnsi(MediaInfoA_Inform(Handle, (IntPtr)0));
        else
            return Marshal.PtrToStringUni(MediaInfo_Inform(Handle, (IntPtr)0));
    }
    public String Get(StreamKind StreamKind, int StreamNumber, String Parameter, InfoKind KindOfInfo, InfoKind KindOfSearch)
    {
        if (Handle == (IntPtr)0)
            return "Unable to load MediaInfo library";
        if (MustUseAnsi)
        {
            IntPtr Parameter_Ptr=Marshal.StringToHGlobalAnsi(Parameter);
            String ToReturn=Marshal.PtrToStringAnsi(MediaInfoA_Get(Handle, (IntPtr)StreamKind, (IntPtr)StreamNumber, Parameter_Ptr, (IntPtr)KindOfInfo, (IntPtr)KindOfSearch));
            Marshal.FreeHGlobal(Parameter_Ptr);
            return ToReturn;
        }
        else
            return Marshal.PtrToStringUni(MediaInfo_Get(Handle, (IntPtr)StreamKind, (IntPtr)StreamNumber, Parameter, (IntPtr)KindOfInfo, (IntPtr)KindOfSearch));
    }
    public String Get(StreamKind StreamKind, int StreamNumber, int Parameter, InfoKind KindOfInfo)
    {
        if (Handle == (IntPtr)0)
            return "Unable to load MediaInfo library";
        if (MustUseAnsi)
            return Marshal.PtrToStringAnsi(MediaInfoA_GetI(Handle, (IntPtr)StreamKind, (IntPtr)StreamNumber, (IntPtr)Parameter, (IntPtr)KindOfInfo));
        else
            return Marshal.PtrToStringUni(MediaInfo_GetI(Handle, (IntPtr)StreamKind, (IntPtr)StreamNumber, (IntPtr)Parameter, (IntPtr)KindOfInfo));
    }
    public String Option(String Option, String Value)
    {
        if (Handle == (IntPtr)0)
            return "Unable to load MediaInfo library";
        if (MustUseAnsi)
        {
            IntPtr Option_Ptr=Marshal.StringToHGlobalAnsi(Option);
            IntPtr Value_Ptr=Marshal.StringToHGlobalAnsi(Value);
            String ToReturn=Marshal.PtrToStringAnsi(MediaInfoA_Option(Handle, Option_Ptr, Value_Ptr));
            Marshal.FreeHGlobal(Option_Ptr);
            Marshal.FreeHGlobal(Value_Ptr);
            return ToReturn;
        }
        else
            return Marshal.PtrToStringUni(MediaInfo_Option(Handle, Option, Value));
    }
    public int State_Get() { if (Handle == (IntPtr)0) return 0; return (int)MediaInfo_State_Get(Handle); }
    public int Count_Get(StreamKind StreamKind, int StreamNumber) { if (Handle == (IntPtr)0) return 0; return (int)MediaInfo_Count_Get(Handle, (IntPtr)StreamKind, (IntPtr)StreamNumber); }
    private IntPtr Handle;
    private bool MustUseAnsi;

    //Default values, if you know how to set default values in C#, say me
    public String Get(StreamKind StreamKind, int StreamNumber, String Parameter, InfoKind KindOfInfo) { return Get(StreamKind, StreamNumber, Parameter, KindOfInfo, InfoKind.Name); }
    public String Get(StreamKind StreamKind, int StreamNumber, String Parameter) { return Get(StreamKind, StreamNumber, Parameter, InfoKind.Text, InfoKind.Name); }
    public String Get(StreamKind StreamKind, int StreamNumber, int Parameter) { return Get(StreamKind, StreamNumber, Parameter, InfoKind.Text); }
    public String Option(String Option_) { return Option(Option_, ""); }
    public int Count_Get(StreamKind StreamKind) { return Count_Get(StreamKind, -1); }
}

Nur google-thru SourceForge.net fand diese https://sourceforge.net/projects/mediainfo/forums/forum/297610/topic/4037237 aber ich weiß nicht, was Sie vorschlagen.

schauen, wie Sie Fragen zum importieren der com-Objekt, aber bitte jemand, der mich anleitet, wie Sie zum importieren der com-Objekt in C# ?

Einige, wie dessen scheitern zum importieren der dll,ist diese andere Weise zu importieren oder einfach nur geben Sie den Pfad zu der dll findet ?

wie

PathToMediaInfoDLL := "C:\Documents and Settings\Administrator\My Documents\autohotkey\MediaInfo.dll"

Tausend Dank im Voraus.

InformationsquelleAutor Usher | 2012-03-05
Schreibe einen Kommentar