Domanda

Sto tentando di scrivere un'applicazione C # il collegamento a un datastore Cognos TM1 utilizzando il tm1api.dll. Ho creato un progetto di guscio di base in VS C # Express 2008, e ha aggiunto il seguente codice

public partial class MainPortal : Window
{

    [System.Runtime.InteropServices.DllImport(@"C:\\Program Files\\Cognos\\TM1\\bin\\tm1api.dll", EntryPoint="TM1APIInitialise")]
    public static extern void TM1APIInitialise();

    public MainPortal()
    {
        InitializeComponent();

        TM1APIInitialise();
    }
}

posso costruire questo progetto senza errori, ma durante l'esecuzione ricevo il seguente errore:

"Impossibile trovare un punto di ingresso denominato 'TM1APIInitialise' nella DLL 'C: \\ Programmi \\ \\ Cognos TM1 \\ bin \\ tm1api.dll'".

Ho usato 'dumpbin / esportazioni tm1api.dll' per determinare il suo punto di ingresso:

    101   5D 00008360 TM1APIFinalize

Ora sono in perdita, sembra avere un punto di ingresso, ma non riconoscerlo. Qualcuno mi può punto nella giusta direzione?

PS. Sono completamente nuovo per C #, così che io possa essere commettere errori estremamente di base:)

È stato utile?

Soluzione 3

Grazie JP e ArsenMkrt, le vostre risposte entrambi portano a me che lavorano fuori il problema.

L'avevo definito come TM1APIInitialise e avrebbe dovuto essere TM1APIInitialize.

Si noti la 's' al posto del 'z' (ortografia maledetto americano):.)

Altri suggerimenti

Sembra che hai il nome del entrypoint sbagliato "TM1APIInitialise" contro "TM1APIFinalize". Inoltre, non è necessario per sfuggire ai backslash \ se si utilizza la stringa letterale @.

provare questo

public partial class MainPortal : Window
{

    [System.Runtime.InteropServices.DllImport(@"C:\Program Files\Cognos\TM1\bin\tm1api.dll", EntryPoint="TM1APIFinalize")]
    public static extern void TM1APIFinalize();

    public MainPortal()
    {
        InitializeComponent();

        TM1APIInitialise();
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top