No encuentra el punto de entrada en tm1api.dll
-
19-09-2019 - |
Pregunta
Estoy intentando escribir una aplicación C # se conecta a un almacén de datos de Cognos TM1 utilizando la tm1api.dll. He creado un proyecto básico en la cáscara VS C # Express 2008, y se añade el siguiente código
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();
}
}
Puedo construir este proyecto sin errores, pero cuando se ejecuta me sale el siguiente error:
"No se puede encontrar un punto de entrada llamado 'TM1APIInitialise' en DLL 'C: \\ Archivos de programa \\ \\ Cognos TM1 \\ bin \\ tm1api.dll'."
He utilizado 'dumpbin / exportaciones tm1api.dll' para determinar su punto de entrada:
101 5D 00008360 TM1APIFinalize
Ahora estoy en una pérdida, que parece tener un punto de entrada, pero no reconocerlo. ¿Puede alguien me punto en la dirección correcta?
PS. Estoy completamente nuevo en C #, por lo que puede estar haciendo errores muy básicos:)
Solución 3
Gracias JP y ArsenMkrt, sus respuestas ambos conducen a mí que se resuelve el problema.
Lo tenía define como TM1APIInitialise y que debería haber sido TM1APIInitialize.
Tenga en cuenta la 's' en lugar del 'z' (ortografía maldita americana):.)
Otros consejos
Parece que tiene el nombre del punto de entrada equivocada "TM1APIInitialise" frente a "TM1APIFinalize". Además, no es necesario para escapar de las barras invertidas \ si se utiliza la cadena literal @.
Probar
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();
}
}