Impossible de trouver le point d'entrée dans tm1api.dll
-
19-09-2019 - |
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:)
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();
}
}