Невозможно найти точку входа в tm1api.dll

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

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 /exports tm1api.dll', чтобы определить его точку входа:

    101   5D 00008360 TM1APIFinalize

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

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

3 ответа

Решение

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

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

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

Похоже, у вас неверное имя точки входа "TM1APIInitialise" по сравнению с "TM1APIFinalize". Кроме того, вам не нужно избегать обратной косой черты \, если вы используете строковый литерал @.

Попробуй это

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();
    }
}
Другие вопросы по тегам