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:)

¿Fue útil?

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();
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top