Question

Je cherche à écrire une application C # connexion à un datastore Cognos TM1 à l'aide du tm1api.dll. J'ai créé un projet shell de base dans VS C # Express 2008, et a ajouté le code suivant

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();
    }
}

Je peux construire ce projet sans erreur, mais lors de l'exécution, je reçois l'erreur suivante:

"Impossible de trouver un point d'entrée nommé 'TM1APIInitialise' dans la DLL C: \\ Program Files \\ Cognos \\ bin \\ TM1 tm1api.dll '."

Je l'ai utilisé 'dumpbin / exportations tm1api.dll' pour déterminer son point d'entrée:

    101   5D 00008360 TM1APIFinalize

Maintenant, je suis à une perte, il semble avoir un point d'entrée, mais ne le reconnaître. Quelqu'un peut-il me diriger dans la bonne direction?

PS. Je suis tout à fait nouveau pour C #, afin que je puisse être de faire des erreurs très fondamentales:)

Était-ce utile?

La solution 3

Merci JP et ArsenMkrt, vos réponses conduisent toutes deux à moi la question de travail.

Je l'avais défini comme TM1APIInitialise et il aurait dû être TM1APIInitialize.

Notez le 's' au lieu de 'z' (orthographe sacrément américaine):.)

Autres conseils

Il semble que vous avez le nom du point d'entrée mal « TM1APIInitialise » versus « TM1APIFinalize ». En outre, vous n'avez pas besoin d'échapper à la barre oblique inverse \ si vous utilisez la chaîne littérale @.

essayer

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();
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top