Incapaz de encontrar ponto de entrada em tm1api.dll
-
19-09-2019 - |
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 :)
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();
}
}