Pergunta

Estou tentando escrever um aplicativo C# conectando a um armazenamento de dados do Cognos TM1 usando o tm1api.dll. Eu criei um projeto de shell básico no VS C# Express 2008 e adicionei o seguinte 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();
    }
}

Posso construir este projeto sem erros, mas ao executar o seguinte erro:

"Incapaz de encontrar um ponto de entrada chamado 'tm1apiinitialise' em dll 'c: programas arquivos cognós tm1 bin tm1api.dll'".

Eu usei 'dumpbin /exports tm1api.dll' para determinar seu ponto de entrada:

    101   5D 00008360 TM1APIFinalize

Agora estou perdido, parece ter um ponto de entrada, mas o reconhece. Alguém pode me apontar na direção certa?

Ps. Eu sou completamente novo em C#, então posso estar cometendo erros extremamente básicos :)

Foi útil?

Solução 3

Obrigado JP e Arsenmkrt, suas respostas me levam a resolver o problema.

Eu o defini como tm1apiinitialize e deveria ter sido tm1apiinitialize.

Observe o 'S' em vez do 'Z' (maldita ortografia americana) :).

Outras dicas

Parece que você tem o nome do ponto de entrada errado "tm1apiinitialise" versus "tm1Apifinalize". Além disso, você não precisa escapar das barras de barriga se usar a string literal @.

tente isso

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top