2009-07-24 3 views
0

Я пытаюсь написать приложение C#, подключающееся к хранилищу данных Cognos TM1, с помощью файла tm1api.dll. Я создал базовый проект оболочки в VS C# Express 2008, и добавил следующий кодНе удалось найти точку входа в tm1api.dll

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(); 
    } 
} 

Я могу построить этот проект без ошибок, но при запуске я получаю следующее сообщение об ошибке:

«Невозможно найти точку входа с именем «TM1APIInitialise» в DLL 'C: \\ Program Files \\ Cognos \\ TM1 \\ bin \\ tm1api.dll'. "

Я использовал «DUMPBIN/экспорт tm1api.dll», чтобы определить точку входа:

101 5D 00008360 TM1APIFinalize 

Сейчас я нахожусь в недоумении, он, кажется, есть точка входа, но делает его распознать. Может кто-то указать мне верное направление?

PS. Я совершенно новой для C#, так что я может сделать очень основные ошибки :)

+0

Извините, скопировал неправильную строку из дамбы: 102 5E 00008350 TM1APIInitialize –

ответ

0

Спасибо JP и ArsenMkrt, ваши ответы приводят ко мне, чтобы решить эту проблему.

Я определил его как TM1APIInitialise, и это должно было быть TM1APIInitialize.

Обратите внимание на 's' вместо 'z' (проклятое американское правописание) :).

1

попробовать это

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(); 
    } 
} 
1

Оказывается, у вас есть имя EntryPoint неправильно «TM1APIInitialise» против «TM1APIFinalize». Кроме того, вам не нужно скрывать обратную косую черту \, если вы используете строковый литерал @.

Смежные вопросы